2015-02-25 9 views
6

MyScript.ps1:Come impostare il codice di uscita quando si genera un'eccezione?

exit 1 

MyThrow.ps1:

throw "test" 

Esecuzione in PowerShell:

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

Clear-Variable LastExitCode 

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

come impostare un codice di uscita appropriato quando un'eccezione?

+0

Perché non eseguire il comando 'try/catch' o cancellare' $ lastexitcode' prima del comando e verificare se è '$ null' in seguito? – arco444

+0

Alla fine lo script non viene eseguito da PowerShell ma dall'utilità di pianificazione. Attualmente se lo script genera un'eccezione, il codice di uscita nell'utilità di pianificazione è 0. –

+0

Hai accesso allo script? La soluzione migliore sarebbe quella di intercettare correttamente le eccezioni lì e uscire con un dal catch, o impostare un codice per uscire con alla fine – arco444

risposta

8

Non è così. Quando lanci un'eccezione, ti aspetti che qualcuno la gestisca. Che qualcuno sarebbe quello che termina l'esecuzione e imposta un codice di uscita. Per esempio:

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

Se non c'è nulla da catturare la vostra eccezione non dovrebbe essere gettandolo in primo luogo, ma uscire subito (con un codice di uscita corretta).

+0

E se si vuole fare un prova a prendere finalmente? Immagino che se finissi all'interno del pescato non avresti mai colpito l'ultimo a causa dell'uscita. – BigMiner

+3

@BigMiner La tua ipotesi è sbagliata. –

Problemi correlati