2015-02-25 9 views
6

MyScript.ps1:Jak ustawić kod wyjścia podczas zgłaszania wyjątku?

exit 1 

MyThrow.ps1:

throw "test" 

Wykonanie w PowerShell:

& ".\MyScript.ps1" 
Write-Host $LastExitCode # Outputs 1 

Clear-Variable LastExitCode 

& ".\MyThrow.ps1" 
Write-Host $LastExitCode # Outputs nothing 

Jak ustawić odpowiedni kod wyjścia kiedy rzuca wyjątek?

+0

Dlaczego nie "spróbuj/złap" polecenia lub wyczyść '$ lastexitcode' przed komendą i sprawdź, czy później jest' $ null'? – arco444

+0

Na koniec skrypt nie jest wykonywany z poziomu PowerShell, ale z harmonogramu zadań. Obecnie, jeśli skrypt zgłasza wyjątek, kod zakończenia w harmonogramie zadań to 0. –

+0

Czy masz dostęp do skryptu? Najlepszym rozwiązaniem byłoby prawidłowe wychwycenie wyjątków i wyjście z a od catch, lub ustawienie kodu do końca na końcu – arco444

Odpowiedz

8

Nie. Kiedy rzucasz wyjątek, oczekujesz, że ktoś go obsłuży. Żeby to ktoś zakończył wykonanie i ustawił kod wyjścia. Na przykład:

try { 
    & ".\MyThrow.ps1" 
} catch { 
    exit 1 
} 

Jeśli nie ma się czego złapać wyjątek nie powinien być rzuca go na pierwszym miejscu, ale zjazd od razu (z odpowiednim kodem wyjścia).

+0

Co jeśli chcesz zrobić spróbuj złapać w końcu? Zakładam, że jeśli trafisz do połowy, nigdy nie trafisz w końcu z powodu wyjścia. – BigMiner

+3

@BigMiner Twoje założenie jest błędne. –

Powiązane problemy