다음을 통해 공유


about_Throw

간단한 설명

throw 기본적으로 스크립트 종료 오류를 생성하는 키워드에 대해 설명합니다.

긴 설명

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

문 종료 오류와 달리 키워드는 throw 전체 호출 스택을 해제합니다. 오류가 블록 또는 trap 문에 의해 catch되지 않는 한 실행이 try/catch 완전히 중지됩니다.

메모

$ErrorActionPreference 를 표시하지 않을 throw수 있습니다. 설정하거나 Ignore설정 SilentlyContinue 하면 오류가 전파되지 않으며 다음 문에서 실행이 계속됩니다. 고급 함수를 -ErrorAction SilentlyContinue호출할 때 매개 변수는 범위-로컬 $ErrorActionPreference 값으로 변환되므로 해당 함수 내에서도 표시되지 않습니다 throw . 표시되지 throw 않더라도 여전히 에 항목을 기록합니다 $Error. 이 값은 Ignore .에 의해 생성된 오류와 같이 종료되지 않는 오류에 $PSCmdlet.ThrowTerminatingError()대한 기록만 방지 $Error 합니다.

오류 범주 및 $ErrorActionPreference 동작에 대한 자세한 내용은 about_Error_Handling 참조하세요.

예를 들어 문의 문 블록 throw 에서 키워드를 사용하여 if 조건에 응답하거나 문 블록에 catch 응답할 수 있습니다try/catch/finally.

throw 키워드는 사용자 메시지 문자열이나 오류를 일으킨 객체와 같은 모든 객체를 던질 수 있습니다.

Syntax

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

throw [<expression>]

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

throw
Exception: ScriptHalted

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

문자열 throw

throw 문의 선택적 표현식은 다음 예시에서 볼 수 있듯이 문자열일 수 있습니다.

throw "This is an error."
Exception: This is an error.

다른 개체 throw

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

throw (Get-Process pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)

자동 변수에서 ErrorRecord 개체의 $Error 속성을 사용하여 오류를 검사할 수 있습니다.

$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

throw 개체 또는 .NET 예외를 수도 있습니다. 다음 예제에서는 throw 키워드를 사용하여 System.FormatException 개체를 throw합니다.

$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된 개체에 따라 달라집니다.

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

필수 매개 변수를 만드는 데 사용 throw

이전 버전의 PowerShell과 달리 매개 변수 유효성 검사에 throw 키워드를 사용하지 마세요. 올바른 방법은 about_Functions_Advanced_Parameters 참조하세요.

참고하십시오