次の方法で共有


about_Throw

簡単な説明

終了エラーを生成する Throw キーワードについて説明します。

長い説明

Throw キーワード (keyword)によって終了エラーが発生します。 Throw キーワード (keyword)を使用して、コマンド、関数、またはスクリプトの処理を停止できます。

たとえば、If ステートメントのスクリプト ブロックの Throw キーワード (keyword)を使用して、条件に応答したり、Try-Catch-Finally ステートメントの Catch ブロックで応答したりできます。 また、パラメーター宣言で Throw キーワード (keyword)を使用して、関数パラメーターを必須にすることもできます。

Throw キーワード (keyword)は、ユーザー メッセージ文字列やエラーの原因となったオブジェクトなど、任意のオブジェクトをスローできます。

構文

Throw キーワード (keyword)の構文は次のとおりです。

throw [<expression>]

Throw 構文の式は省略可能です。 Throw ステートメントが Catch ブロックに表示されず、式が含まれていない場合は、ScriptHalted エラーが生成されます。

C:\PS> throw

Exception: ScriptHalted

式を指定せずに Catch ブロックで Throw キーワード (keyword)を使用すると、現在の RuntimeException が再度スローされます。 詳細については、「about_Try_Catch_Finally」を参照してください。

文字列のスロー

次の例に示すように、Throw ステートメントの省略可能な式には文字列を指定できます。

C:\PS> throw "This is an error."

Exception: This is an error.

他のオブジェクトをスローする

式には、次の例に示すように、PowerShell プロセスを表す オブジェクトをスローする オブジェクトを指定することもできます。

C:\PS> throw (get-process Pwsh)

Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)

$error自動変数の ErrorRecord オブジェクトの TargetObject プロパティを使用して、エラーを調べることができます。

C:\PS> $error[0].targetobject

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
    125   174.44     229.57      23.61    1548   2 pwsh
     63    44.07      81.95       1.75    1732   2 pwsh
     63    43.32      77.65       1.48    9092   2 pwsh

ErrorRecord オブジェクトまたは .NET 例外をスローすることもできます。 次の例では、Throw キーワード (keyword)を使用して System.FormatException オブジェクトをスローします。

C:\PS> $formatError = new-object system.formatexception

C:\PS> throw $formatError

OperationStopped: One of the identified items was in an invalid format.

結果のエラー

Throw キーワード (keyword)は ErrorRecord オブジェクトを生成できます。 ErrorRecord オブジェクトの Exception プロパティには、RuntimeException オブジェクトが含まれています。 ErrorRecord オブジェクトと RuntimeException オブジェクトの残りの部分は、Throw キーワード (keyword)がスローするオブジェクトによって異なります。

RunTimeException オブジェクトは ErrorRecord オブジェクトにラップされ、ErrorRecord オブジェクトは自動的に$Error自動変数に保存されます。

Throw を使用して必須パラメーターを作成する

PowerShell の過去のバージョンとは異なり、パラメーターの検証には Throw キーワード (keyword)を使用しないでください。 正しい方法については 、「about_Functions_Advanced_Parameters 」を参照してください。

こちらもご覧ください