예외를 던질 때 종료 코드를 설정하는 방법
MyScript.ps1:
exit 1
MyThrow.ps1:
throw "test"
PowerShell에서 실행:
& ".\MyScript.ps1"
Write-Host $LastExitCode # Outputs 1
Clear-Variable LastExitCode
& ".\MyThrow.ps1"
Write-Host $LastExitCode # Outputs nothing
예외를 던질 때 올바른 종료 코드를 설정하려면 어떻게 해야 합니까?
주의:
Powershell 4 이하 사용:
예외가 발생하면 종료 코드가 0으로 유지됩니다(불행히도).
Powershell 5 이상 사용 시:
예외가 발생할 경우 종료 코드 기본값은 1입니다.
넌 아냐.예외를 던질 때는 누군가가 처리할 것으로 예상됩니다.누군가가 실행을 종료하고 종료 코드를 설정할 것입니다.예를 들어:
try {
& ".\MyThrow.ps1"
} catch {
exit 1
}
예외를 발견할 수 있는 내용이 없으면 처음부터 예외를 던지지 말고 바로 종료해야 합니다(적절한 종료 코드를 사용하여).
사실 던지기 전에 코드를 설정할 수도 있습니다.
스크립트의 내용:던지기.ps1
exit 222
throw "test"
출력:
PS C:\> .\Throw.ps1
PS C:\> $LASTEXITCODE
222
다음과 같이 실행할 경우:
powershell .\Throw.ps1
출력은 다음과 같습니다.
PS C:\> powershell .\Throw.ps1
PS C:\> $LASTEXITCODE
1
하지만 여기서 중요한 것은 파워셸 종료 코드가 0 또는 1이어야 한다는 것입니다. 다른 코드는 결국 1의 결과를 제공합니다.
스크립트를 실행한 후 $?를 시도하면 참인지 거짓인지에 따라 결과가 달라집니다.exit 0 --> true
,exit 1 --> false
다음은 예입니다.
스크립트 내용:던지기_1.ps1
exit 1
throw "test"
출력:
PS C:\> .\Throw_1.ps1
PS C:\> $?
False
스크립트 내용:던지기_0.ps1
exit 0
throw "test"
출력:
PS C:\> .\Throw_0.ps1
PS C:\> $?
True
보다시피 이것은 여러분이 필요로 하거나 성취하고자 하는 것입니다.
powershell 내부에서 mythrow.ps1을 실행하면 $?가 false로 설정되고 $error 개체 배열에 추가됩니다.다른 powershell 프로세스와 함께 실행하면 $last exitcode가 1로 설정됩니다.
PS C:\> powershell mythrow.ps1
PS C:\> $lastexitcode
1
언급URL : https://stackoverflow.com/questions/28724388/how-to-set-the-exit-code-when-throwing-an-exception
'programing' 카테고리의 다른 글
RANGE 유형이 아닌 대신 INDEX 유형을 사용하는 날짜/시간 필드의 MySQL 인덱스 (0) | 2023.09.04 |
---|---|
도커 컴포지션에서 빌드 인수를 정의하는 방법은 무엇입니까? (0) | 2023.09.04 |
django - MySQL 데이터베이스에 저장되지 않은 레코드이지만 AutoIncrement가 증가합니다. (0) | 2023.09.04 |
쿼리가 주어지면 어떤 트리거가 발생하는지 알 수 있습니까? (0) | 2023.09.04 |
속도를 위해 var2 순서에 따라 'Y'와 'Z' 그룹 사이의 col<>'X'와 col2가 있는 테이블에서 SELECT Count(DISCTINCT(col)) var, col2 var2를 최적화하십시오. (0) | 2023.09.04 |