PowerShell HelpFile - about_Throw
 記事記号:[me1586] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    about_Throw

簡易説明
    終了エラーを生成する Throw キーワードについて説明します。

詳細説明
    Throw キーワードは、終了エラーを引き起こします。Throw キーワードを使用して、
    コマンド、関数、またはスクリプトの処理を停止できます。

    たとえば、Throw キーワードは、If ステートメントのスクリプト ブロックでなんら
    かの条件に一致する場合の反応として使用したり、Try-Catch-Finally ステートメン
    トの Catch ブロックで使用したりできます。関数のパラメーターを必須として定義す
    るために、パラメーター宣言で Throw キーワードを使用することもできます。

    Throw キーワードでは、ユーザー メッセージ文字列、エラーの原因となったオブジェ
    クトなど、あらゆるオブジェクトをスローできます。


  構文

    Throw キーワードの構文は次のとおりです。

        throw [<expression>]


    Throw の構文の式 (expression) の部分は省略可能です。Throw ステートメントが C
    atch ブロック内にない場合は、式が指定されていないと、ScriptHalted エラーが生
    成されます。

        C:\PS> throw

        ScriptHalted
        行:1 文字:6
        + throw <<<<
            + CategoryInfo          : 操作停止: (:) []、RuntimeException
            + FullyQualifiedErrorId : ScriptHalted


    式を指定せずに Throw キーワードを Catch ブロックで使用した場合、現在の Runti
    meException が再度スローされます。詳細については、「about_Try_Catch_Finally」
    を参照してください。


  文字列のスロー

    次の例に示すように、Throw ステートメントの省略可能な expression には文字列を
    指定できます。

        C:\PS> throw "This is an error."

        This is an error.
        行:1 文字:6
        + throw <<<< "This is an error."
            + CategoryInfo          : 操作停止: (This is an error.:String) []、R
                                                untimeException
            + FullyQualifiedErrorId : This is an error.


  他のオブジェクトのスロー

    expression には、PowerShell プロセスを表すオブジェクトをスローするオブジェク
    トを指定することもできます。次に例を示します。

        C:\PS> throw (get-process powershell)

        System.Diagnostics.Process (powershell)
        行: 1 文字: 6
        + throw <<<< (get-process powershell)
            + CategoryInfo          : 操作停止: (System.Diagnostics.Process (pow
                                      ershell):Process) []、RuntimeException
            + FullyQualifiedErrorId : System.Diagnostics.Process (powershell)

    $error 自動変数に格納されている ErrorRecord オブジェクトの TargetObject プロ
    パティを使用すると、エラーを調査することができます。


        C:\PS> $error[0].targetobject

        Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
        -------  ------    -----      ----- -----   ------     -- -----------
            319      26    61016      70864   568     3.28   5548 powershell


    ErrorRecord オブジェクトや Microsoft .NET Framework の例外をスローすることも
    できます。次の例では、Throw キーワードを使用して、System.FormatException オ
    ブジェクトをスローしています。

        C:\PS> $formatError = new-object system.formatexception

        C:\PS> throw $formatError

        識別された項目のうち 1 つが無効な形式です。
        行:1 文字:6
        + throw <<<< $formatError
            + CategoryInfo          : 操作停止: (:) []、FormatException 
            + FullyQualifiedErrorId : 識別された項目のうち 1 つが無効な形式です。


  生成されるエラー

    Throw キーワードは、ErrorRecord オブジェクトを生成できます。ErrorRecord オブ
    ジェクトの Exception プロパティには、RuntimeException オブジェクトが格納され
    ます。RuntimeException オブジェクトと ErrorRecord オブジェクトの残りの要素は、
    Throw キーワードがスローするオブジェクトによって異なります。

    RunTimeException オブジェクトは ErrorRecord オブジェクトにラップされ、ErrorR
    ecord オブジェクトは $Error 自動変数に自動的に保存されます。


  Throw を使用した必須パラメーターの作成

    Throw キーワードを使用して、関数のパラメーターを必須にすることができます。

    これは、Parameter キーワードの Mandatory パラメーターを使用する方法に代わる
    方法です。Mandatory パラメーターを使用した場合は、パラメーターの値を指定する
    ように求めるプロンプトが表示されます。Throw キーワードを使用した場合は、コマ
    ンドが処理を停止し、エラー レコードを表示します。

    たとえば、パラメーターのサブ式に Throw キーワードを指定すると、Path パラメー
    ターがその関数の必須のパラメーターとして機能します。

    この場合、Throw キーワードは単にメッセージ文字列をスローしているだけのように
    見えますが、Path パラメーターが指定されなかった場合に終了エラーを引き起こし
    ているのは、Throw キーワードの存在です。Throw に続く式は省略可能です。

        function Get-XMLFiles
        {
            param ($path = $(throw "The Path parameter is required."))
            dir -path $path\* -include *.xml -recurse | sort lastwritetime | ft 
            lastwritetime, attributes, name  -auto
        }


関連項目
    about_Break
    about_Continue
    about_Scope
    about_Trap
    about_Try_Catch_Finally
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_Throw
ご利用数: 1859801
感想・要望・問い合わせは こちら