簡単な説明
終了エラーを生成する throw キーワードについて説明します。
長い説明
throw キーワードを指定すると、終了エラーが発生します。
throw キーワードを使用して、コマンド、関数、またはスクリプトの処理を停止できます。
たとえば、throw ステートメントのスクリプト ブロックの if キーワードを使用して、条件に応答したり、catchtry-catch- ステートメントの finally ブロックで応答したりできます。
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)
自動変数の ErrorRecord オブジェクトの $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
throw オブジェクトまたは .NET 例外を することもできます。 次の例では、 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