PowerShell
Gestione degli errori
Ricerca…
introduzione
Tipi di errore
Un errore è un errore, ci si potrebbe chiedere come potrebbero esserci tipi in esso. Bene, con powershell l'errore rientra ampiamente in due criteri,
- Errore di terminazione
- Errore non terminante
Come dice il nome, gli errori di terminazione terminano l'esecuzione e un errore non terminante consente di continuare con l'istruzione successiva.
Questo è vero supponendo che il valore $ ErrorActionPreference sia predefinito (Continua). $ ErrorActionPreference è una variabile di prefrence che dice a PowerShell cosa fare in caso di errore "non terminante".
Errore di terminazione
Un errore di terminazione può essere gestito con un tipico tentativo di cattura, come di seguito
Try
{
Write-Host "Attempting Divide By Zero"
1/0
}
Catch
{
Write-Host "A Terminating Error: Divide by Zero Caught!"
}
Il frammento di cui sopra verrà eseguito e l'errore verrà catturato attraverso il blocco catch.
Errore non terminante
Per impostazione predefinita, un errore senza terminazione nell'altra mano non verrà catturato nel blocco catch. Il motivo dietro questo è un errore non terminante non è considerato un errore critico.
Try
{
Stop-Process -Id 123456
}
Catch
{
Write-Host "Non-Terminating Error: Invalid Process ID"
}
Se si esegue la riga sopra riportata, non si otterrà l'output dal blocco catch poiché l'errore non è considerato critico e l'esecuzione continuerà semplicemente dal comando successivo. Tuttavia, l'errore verrà visualizzato nella console. Per gestire un errore senza interruzione, è necessario modificare la preferenza dell'errore.
Try
{
Stop-Process -Id 123456 -ErrorAction Stop
}
Catch
{
"Non-Terminating Error: Invalid Process ID"
}
Ora, con la preferenza di errore aggiornata, questo errore verrà considerato un errore di chiusura e verrà catturato nel blocco catch.
Richiamo degli errori di terminazione e non di terminazione:
Il cmdlet Write-Error scrive semplicemente l'errore nel programma host invocante. Non si ferma l'esecuzione. Dove il tiro ti darà un errore di chiusura e interromperà l'esecuzione
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"