수색…
소개
오류 유형
오류는 오류입니다. 유형이있을 수 있습니다. PowerShell을 사용하면 오류가 크게 두 가지 기준으로 분류됩니다.
- 종료 오류
- 비 종료 오류
이름에서 알 수 있듯이 종료 오류는 실행을 종료하고 비 종료 오류는 실행을 다음 명령문으로 계속 진행합니다.
이것은 $ ErrorActionPreference 값이 default (Continue)라고 가정 할 때 사실입니다. $ ErrorActionPreference는 Preterrence 변수 로, "Non-Terminating"오류가 발생할 경우 PowerShell이 수행 할 작업을 지시합니다.
종료 오류
종료 오류는 다음과 같이 일반적인 try catch를 사용하여 처리 할 수 있습니다.
Try
{
Write-Host "Attempting Divide By Zero"
1/0
}
Catch
{
Write-Host "A Terminating Error: Divide by Zero Caught!"
}
위의 코드가 실행되고 catch 블록을 통해 오류가 catch됩니다.
비 종료 오류
반면에 비 종결 오류는 기본적으로 catch 블록에서 발견되지 않습니다. 그 이유는 Non-Terminating 오류가 심각한 오류로 간주되지 않기 때문입니다.
Try
{
Stop-Process -Id 123456
}
Catch
{
Write-Host "Non-Terminating Error: Invalid Process ID"
}
위의 명령을 실행하면 오류가 중요하지 않은 것으로 간주되어 다음 명령에서 실행이 계속되므로 catch 블록에서 출력을 얻지 못할 것입니다. 그러나 오류가 콘솔에 표시됩니다. 비 종결 오류를 처리하려면 오류 기본 설정을 간단하게 변경해야합니다.
Try
{
Stop-Process -Id 123456 -ErrorAction Stop
}
Catch
{
"Non-Terminating Error: Invalid Process ID"
}
이제 업데이트 된 오류 환경 설정을 사용하면이 오류는 종료 오류로 간주되어 catch 블록에서 발견됩니다.
종료 및 비 종료 오류 호출 :
Write-Error cmdlet은 호출하는 호스트 프로그램에 오류를 기록하기 만합니다. 실행을 멈추지 않습니다. 던짐에 따라 종료 오류가 발생하고 실행이 중지됩니다.
Write-host "Going to try a non terminating Error "
Write-Error "Non terminating"
Write-host "Going to try a terminating Error "
throw "Terminating Error "
Write-host "This Line wont be displayed"