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