about_Throw
簡単な説明
終了エラーをthrow
生成するキーワード (keyword)について説明します。
詳細な説明
throw
キーワード (keyword)によって終了エラーが発生します。 キーワード (keyword)をthrow
使用して、コマンド、関数、またはスクリプトの処理を停止できます。
たとえば、ステートメントのthrow
スクリプト ブロック内のキーワード (keyword)をif
使用して、条件またはステートメントの-finally
try
catch
-ブロックに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を参照してください。
関連項目
PowerShell