about_Throw

업데이트 날짜: 2012년 8월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0

항목

about_Throw

간단한 설명

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

자세한 설명

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

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

Throw 키워드는 사용자 메시지 문자열 등의 개체나 오류를 가져온 개체를 throw할 수 있습니다.

구문

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

        throw [<expression>]

Throw 구문의 식은 선택 사항입니다. Throw 문이 Catch 블록에 나타나지 않고 식을 포함하지 않으면 이 문은 ScriptHalted 오류를 생성합니다.

        C:\PS> throw

        ScriptHalted
        At line:1 char: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.
        At line:1 char: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)
        At line:1 char: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

        One of the identified items was in an invalid format.
        At line:1 char:6
        + throw <<<<  $formatError
            + CategoryInfo          : OperationStopped: (:) [], FormatException
            + FullyQualifiedErrorId : One of the identified items was in an invalid format.

결과 오류

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\*.xml -recurse | sort lastwritetime | ft lastwritetime, attributes, name  -auto
        }

참고 항목

about_Break

about_Continue

about_Scope

about_Trap

about_Try_Catch_Finally