항목
    about_Throw

간단한 설명
    종료 오류를 생성하는 Throw 키워드에 대해 설명합니다.

자세한 설명
    Throw 키워드는 종료 오류를 생성합니다. Throw 키워드를 사용하여 명령, 함수 또는 스크립트의 처리를 중지할 수 
    있습니다. 

    예를 들어 If 문의 스크립트 블록에서 Throw 키워드를 사용하여 조건에 대응하거나 Try-Catch-Finally 문의 
    Catch 블록에서 Throw 키워드를 사용할 수 있습니다. 또한 매개 변수 선언에서 Throw 키워드를 사용하여 함수 
    매개 변수를 필수 항목으로 지정할 수 있습니다. 

    Throw 키워드는 오류를 발생시킨 개체나 사용자 메시지 문자열과 같은 임의의 개체를 throw할 수 있습니다. 


  구문

    Throw 키워드의 구문은 다음과 같습니다.

        throw [<expression>]


    Throw 구문의 expression은 선택 사항입니다. throw 문이 Catch 블록에 나타나지 않고 식을 
    포함하지 않는 경우 ScriptHalted 오류가 생성됩니다.

        C:\PS> throw

        ScriptHalted
        줄:1 문자:6
        + throw <<<<
            + CategoryInfo          : OperationStopped: (:) [], RuntimeException
            + FullyQualifiedErrorId : ScriptHalted


    Throw 키워드가 식 없이 Catch 블록에서 사용되는 경우 현재 RuntimeException이 다시 
    throw됩니다. 자세한 내용은 about_Try_Catch_Finally를 참조하십시오.


  문자열 throw

    throw 문의 선택적 식은 다음 예제와 같이 문자열일 수 있습니다. 

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

        This is an error.
        줄:1 문자:6
        + throw <<<< "This is an error."
            + CategoryInfo          : OperationStopped: (This is an error.:String) [], RuntimeException
            + FullyQualifiedErrorId : This is an error.


  기타 개체 throw

    PowerShell 프로세스를 나타내는 개체를 throw하는 다음 예제와 같이 식은 개체일 수도 있습니다.

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

        System.Diagnostics.Process (powershell) 
        줄:1 문자:6
        + throw <<<<  (get-process powershell)
            + CategoryInfo          : OperationStopped: (System.Diagnostics.Process (powershell):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할 수 있습니다. 다음 예제에서는 Throw 
    키워드를 사용하여 System.FormatException 개체를 throw합니다.

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

        C:\PS> throw $formatError

        식별된 항목 중 한 항목의 형식이 잘못되었습니다.
        줄:1 문자:6
        + throw <<<< $formatError
            + CategoryInfo          : OperationStopped: (:) [], FormatException 
            + FullyQualifiedErrorId : 식별된 항목 중 한 항목의 형식이 잘못되었습니다.


  생성되는 오류

    Throw 키워드는 ErrorRecord 개체를 생성할 수 있습니다. ErrorRecord 개체의 Exception 
    속성에는 RuntimeException 개체가 포함되어 있습니다. 나머지 ErrorRecord 개체와 
    RuntimeException 개체는 Throw 키워드가 throw하는 개체에 따라 다릅니다.

    RunTimeException 개체는 ErrorRecord 개체에서 래핑되며 ErrorRecord 개체는 $Error 
    자동 변수에 자동으로 저장됩니다.


  Throw를 사용하여 필수 매개 변수 만들기

    Throw 키워드를 사용하여 함수 매개 변수를 필수 항목으로 지정할 수 있습니다. 

    이 방법은 Parameter 키워드의 Mandatory 매개 변수 대신 사용할 수 있습니다. Mandatory 매개 
    변수를 사용하는 경우 필요한 매개 변수 값을 묻는 메시지가 표시됩니다. Throw 키워드를 사용하는 
    경우에는 명령이 중지하고 오류 레코드를 표시합니다.

    예를 들어 매개 변수 하위 식의 Throw 키워드는 Path 매개 변수를 함수에서 필수 매개 변수로 지정합니다. 

    이 경우에 Throw 키워드는 메시지 문자열을 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




목차