수색…


소개

이 항목에서는 PowerShell의 오류 유형 및 오류 처리에 대해 설명합니다.

오류 유형

오류는 오류입니다. 유형이있을 수 있습니다. 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" 


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow