about_Throw
簡単な説明
終了エラーを生成する throw
キーワードについて説明します。
詳細な説明
throw
キーワードを指定すると、終了エラーが発生します。 throw
キーワードを使用して、コマンド、関数、またはスクリプトの処理を停止できます。
たとえば、if
ステートメントのスクリプト ブロック内の throw
キーワードを使用して、条件に応答したり、try
-catch
-finally
ステートメントの catch
ブロックに応答したりできます。
throw
キーワードは、ユーザー メッセージ文字列やエラーの原因となったオブジェクトなど、任意のオブジェクトをスローできます。
構文
throw
キーワードの構文は次のとおりです。
throw [<expression>]
throw
構文の式は省略可能です。 throw
ステートメントがcatch
ブロックに表示されておらず、式が含まれていない場合は、ScriptHalted エラーが生成されます。
throw
Exception: ScriptHalted
throw
キーワードが式のない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)
$Error
自動変数の ErrorRecord オブジェクトの 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
することもできます。 次の例では、 throw
キーワードを使用して、 System.FormatException オブジェクトをスローします。
$formatError = New-Object System.FormatException
throw $formatError
OperationStopped: One of the identified items was in an invalid format.
結果のエラー
throw
キーワードは、ErrorRecord オブジェクトを生成できます。 ErrorRecord オブジェクトの Exception プロパティには、RuntimeException オブジェクトが含まれています。
ErrorRecord オブジェクトと RuntimeException オブジェクトの残りの部分は、スローされるオブジェクトによって異なります。
throw
オブジェクトは ErrorRecord オブジェクトにラップされ、ErrorRecord オブジェクトは自動的に$Error
自動変数に保存されます。
throw
を使用して必須パラメーターを作成する
PowerShell の過去のバージョンとは異なり、パラメーターの検証には throw
キーワードを使用しないでください。 正しい方法については、 about_Functions_Advanced_Parameters を参照してください。
関連項目
PowerShell