항목
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