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
ブロックでcatch
キーワード (keyword)を使用すると、現在の 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 オブジェクトの TargetObject プロパティを使用して、$Error
エラーを調べることができます。
$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 オブジェクトの残りの部分は、スローされるオブジェクトによって異なります。
オブジェクトは throw
ErrorRecord オブジェクトにラップされ、ErrorRecord オブジェクトは自動変数に自動的に $Error
保存されます。
を使用して throw
必須パラメーターを作成する
PowerShell の過去のバージョンとは異なり、パラメーターの検証には throw
キーワード (keyword)を使用しないでください。 正しい方法については 、「about_Functions_Advanced_Parameters 」を参照してください。