about_Throw

簡単な説明

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

長い説明

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

たとえば、ステートメントのthrowスクリプト ブロック内のキーワード (keyword)をif使用して、条件またはステートメントの-finallytrycatch-ブロックにcatch応答できます。

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

構文

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

throw [<expression>]

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

throw
Exception: ScriptHalted

throw キーワード (keyword)が式のないブロックでcatch使用されている場合、現在の RuntimeException が再度スローされます。 詳細については、「about_Try_Catch_Finally」を参照してください

文字列のスロー

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

throw "This is an error."
Exception: This is an error.

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

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

throw (Get-Process pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)

エラーを調べるには、自動変数の ErrorRecord オブジェクトの $Error TargetObject プロパティを使用できます。

$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)をthrow使用して System.FormatException オブジェクトをスローします。

$formatError = New-Object System.FormatException
throw $formatError
OperationStopped: One of the identified items was in an invalid format.

結果のエラー

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

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

必須パラメーターの作成に使用 throw する

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

関連項目