Ricerca…


introduzione

Questo argomento illustra i tipi di errore e la gestione degli errori in PowerShell.

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" 


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow