ja-JP/about_Throw.help.txt
|
TOPIC about_Throw 簡単な説明 既定でスクリプトを終了させるエラー(script-terminating error)を生成する throw キーワードについて説明します。 詳細な説明 throw キーワードは、既定でスクリプトを終了させるエラーを発生させます。 throw キーワードを使って、コマンド、関数、またはスクリプトの処理を停止 できます。 ステートメントを終了させるエラーとは異なり、throw キーワードは呼び出し スタック全体を巻き戻します(アンワインドします)。エラーが try/catch ブロックまたは trap ステートメントで捕捉されない限り、実行は完全に停止 します。 注: $ErrorActionPreference は throw を抑制できます。SilentlyContinue または Ignore に設定されている場合、エラーは伝播せず、次のステートメント から実行が続行されます。高度な関数を -ErrorAction SilentlyContinue で 呼び出すと、このパラメーターはスコープローカルな $ErrorActionPreference の値に変換されるため、その関数内の throw も抑制されます。抑制された場合 でも、throw は $Error にエントリを記録します。Ignore の値は、 $PSCmdlet.ThrowTerminatingError() で生成されるような非終了エラーに ついてのみ $Error への記録を防ぎます。 エラーのカテゴリーと $ErrorActionPreference の動作の詳細については、 about_Error_Handling を参照してください。 たとえば、条件に応答するために if ステートメントのステートメントブロックで throw キーワードを使ったり、try/catch/finally ステートメントの catch ブロックで使ったりできます。 throw キーワードは、ユーザーメッセージ文字列やエラーの原因となったオブ ジェクトなど、任意のオブジェクトをスローできます。 構文 throw キーワードの構文は次のとおりです。 throw [<expression>] throw 構文の expression は省略可能です。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 を参照してください。 関連項目 about_Break about_Continue about_Error_Handling about_Scopes about_Trap about_Try_Catch_Finally ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |