about_Throw
簡単な説明
終了エラーを生成する Throw キーワードについて説明します。
長い説明
Throw キーワードを使うと、終了エラーが発生します。 Throw キーワードを使用すると、コマンド、関数、またはスクリプトの処理を停止できます。
たとえば、If ステートメントのスクリプトブロックで Throw キーワードを使用して、条件に応答したり、try-catch ステートメントの Catch ブロックで Throw キーワードを使用したりすることができます。 また、パラメーター宣言で Throw キーワードを使用して、関数パラメーターを必須にすることもできます。
Throw キーワードを使用すると、ユーザーメッセージ文字列や、エラーの原因となったオブジェクトなど、任意のオブジェクトをスローできます。
構文
Throw キーワードの構文は次のとおりです。
throw [<expression>]
Throw 構文の式は省略可能です。 Throw ステートメントが Catch ブロックに出現せず、式も含まれていない場合、例外が生成されます。
C:\PS> throw
Exception: ScriptHalted
Throw キーワードが式のない Catch ブロックで使用されている場合は、現在の RuntimeException を再度スローします。 詳細については、「about_Try_Catch_Finally」を参照してください。
文字列をスローする
Throw ステートメント内の省略可能な式は、次の例に示すように文字列にすることができます。
C:\PS> throw "This is an error."
Exception: This is an error.
他のオブジェクトのスロー
式は、次の例に示すように、PowerShell プロセスを表すオブジェクトをスローするオブジェクトにすることもできます。
C:\PS> throw (get-process Pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)
$Error 自動変数の ErrorRecord オブジェクトの TargetObject プロパティを使用して、エラーを調べることができます。
C:\PS> $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 キーワードを使用して FormatException オブジェクトをスローする例を次に示します。
C:\PS> $formatError = new-object system.formatexception
C:\PS> throw $formatError
OperationStopped: One of the identified items was in an invalid format.
生成されたエラー
Throw キーワードを使用すると、ErrorRecord オブジェクトを生成できます。 ErrorRecord オブジェクトの Exception プロパティには、RuntimeException オブジェクトが含まれています。 ErrorRecord オブジェクトと RuntimeException オブジェクトの残りの部分は、Throw キーワードによってスローされるオブジェクトによって異なります。
RunTimeException オブジェクトは ErrorRecord オブジェクトにラップされ、ErrorRecord オブジェクトは $Error 自動変数に自動的に保存されます。
Throw を使用して必須パラメーターを作成する
以前のバージョンの PowerShell とは異なり、パラメーターの検証に Throw キーワードを使用しないでください。 正しい方法については about_Functions_Advanced_Parameters を参照してください。
関連項目
フィードバック
フィードバックの送信と表示