Hai mai visto un crash dell’applicazione? Se è così, sai quanto può essere frustrante e se sei un programmatore, probabilmente maledirai lo sviluppatore per non aver inserito il giusto meccanismo di gestione degli errori! E questo è esattamente ciò che questo pezzo è tutto. La gestione degli errori è parte integrante del codice di un’applicazione in quanto rileva errori imprevisti e garantisce che l’applicazione sia terminata in modo sicuro., Come con la maggior parte dei linguaggi di programmazione, PowerShell supporta anche un meccanismo di gestione degli errori chiamato try-catch, ma prima di questo, impariamo un po ‘ sulla gestione degli errori in PowerShell.
Perché hai bisogno di gestire gli errori?
Una domanda piuttosto semplice che la maggior parte di voi potrebbe già conoscere. Ancora, tocchiamo brevemente su di esso per ribadire alcuni punti importanti.
La gestione degli errori aiuta nei seguenti modi.
- Impedisce l’arresto anomalo di un’applicazione.
- Rende facile per l’utente sapere che qualcosa non va e che dovrebbero contattare il team di supporto.,
- Fornisce dettagli sull’errore e sulle sue possibili cause.
- Aiuta con ulteriori analisi e per risolvere i problemi.
- Offre la possibilità di personalizzare i messaggi di errore inviati agli utenti finali.
- Rende facile mantenere il codice.
- Il tuo programma potrebbe continuare a funzionare anche dopo l’errore, a seconda dell’errore e del tuo codice.
- Considerata una buona pratica di programmazione.
Ora che abbiamo toccato i vantaggi della gestione degli errori, vediamo come può essere implementato in PowerShell.,
Gestione degli errori in PowerShell
In linea di massima, ci sono due tipi di errori e sono: errori di terminazione e non terminazione.
Errori di terminazione e non terminazione
Come suggerisce il nome, gli errori di terminazione sono quelli che sono critici e terminano il programma bruscamente mentre gli errori di non terminazione consentono al programma di funzionare ma possono dare l’output sbagliato o, a volte, anche risultati drastici. Ora, se ti stai chiedendo, gli errori non terminanti sono potenzialmente più pericolosi degli errori di terminazione perché non sai quali aspetti possono essere modificati.,
Alcuni possibili errori di terminazione sono errori di memoria e di sintassi mentre la maggior parte degli errori nella logica di programmazione e gli errori imprevisti rientrano nella categoria non terminante.
Conversione di errori non terminanti in errori di terminazione
Come programmatore, puoi dire a PowerShell di trattare gli errori non terminanti come errori di terminazione, quindi il programma si arresta se incontra quel particolare errore. Questa modifica consente di gestire l’errore utilizzando il blocco try-catch di PowerShell perché per impostazione predefinita gli errori non terminanti non possono essere gestiti con il blocco try-catch.,
Per convertire gli errori non terminanti in errori di terminazione, utilizzare un parametro chiamato ErrorAction. Ogni cmdlet supporta questo parametro ed è progettato per dire al programma quale azione dovrebbe prendere quando incontra un errore. ErrorAction viene fornito con le seguenti opzioni
- Stop: Questo arresta il programma e lo considera come un errore di terminazione.
- Continua: consente al programma di continuare e viene visualizzato l’errore.
- SilentlyContinue: Il programma viene eseguito e non vengono visualizzati errori.
- Ignora: Ignora l’errore e continua.,
- Richiesta: visualizza l’errore e controlla se deve continuare.
- Sospendi: può essere utilizzato in un flusso di lavoro di Windows PowerShell. La limitazione è che non può sospendere le funzioni avanzate.
La sintassi per ErrorAction è:
$variable = Get:content \user.txt:ErrorAction Stop
Questo comando cambia un errore non terminante in uno terminante, quindi puoi gestirlo.
Costruire un blocco try-catch
Una volta che hai un errore di terminazione o hai convertito uno non terminante in un errore di terminazione, puoi gestirlo usando il blocco try-catch di PowerShell.,
La sintassi generica è:
In questo esempio, i dati del file viene memorizzato nella variabile $e se c’è un errore, il codice che arriva al blocco catch e visualizza il messaggio. L’esempio sopra è di base, progettato per darti un’idea della sintassi e dell’uso. Nel mondo reale, tuttavia, utilizzerai questo blocco try-catch di PowerShell per ottenere informazioni sull’errore e agire di conseguenza.,
Applicazioni pratiche di PowerShell try-catch block
È possibile accedere al record di errore all’interno del blocco catch. Infatti, il messaggio di errore è memorizzato nella variabile corrente $_. Puoi fare qualsiasi cosa con questo record di errore come analizzare l’errore, visualizzare un avviso e altro ancora. Un potente attributo della variabile corrente è l’eccezione in quanto l’idea è di saperne di più sugli eventi imprevisti che hanno causato l’arresto del programma. Inoltre, l’eccezione stessa viene fornita con molti attributi come ItemName, GetType, Message, ecc.,,
Ad esempio:
try{$variable = Get:content \user.txt:ErrorAction Stop}catch{write:output $_Exception.Message}
Ora che le basi sono chiare, passiamo alla parte avanzata.
È possibile utilizzare il blocco catch per rilevare eccezioni specifiche, a condizione di conoscerle o anticiparle. Ad esempio, supponiamo che tu voglia visualizzare un messaggio specifico se il file non viene trovato e altri messaggi per altre eccezioni, il tuo codice dovrebbe essere simile a questo:
Alcuni punti da considerare quando usi try-catch
Tieni presente i seguenti punti mentre usi il blocco try-catch di PowerShell.,
- Non dovrebbe esserci codice tra le parentesi terminanti del blocco try e il comando catch. In altre parole, la parola “catch” dovrebbe essere immediatamente nella riga successiva dopo le parentesi graffe di chiusura del blocco try
- Questo blocco try-catch di PowerShell è molto utile per gestire gli errori che si prevede possano accadere nel programma.
- Il blocco catch catturerà qualsiasi eccezione generata all’interno del blocco try indipendentemente dalla sua origine.
- PowerShell try-catch comando è una comoda alternativa a più istruzioni if.,
- Il blocco try può essere seguito da un numero qualsiasi di blocchi catch, ma dovrebbero essere consecutivi senza altro codice intermedio.
Finally block
C’è qualcosa chiamato finally block che puoi usare con try-catch. Questo è opzionale e non deve essere utilizzato in ogni momento. Questo blocco eseguirà il codice menzionato al suo interno indipendentemente dal fatto che ci sia stato un errore o meno. Questo blocco dovrebbe venire subito dopo le parentesi graffe di chiusura dell’ultimo blocco di cattura.,
Ad esempio:
Nell’esempio precedente, una voce verrà aggiunta nel file di registro ogni volta che viene effettuato un tentativo di accesso al file, indipendentemente dal fatto che il file sia stato trovato o meno.
Try-catch: Provalo e evita crash
La gestione degli errori è una parte importante di qualsiasi programma in quanto impedisce all’applicazione di bloccarsi e ti aiuta ad analizzare la possibile causa dell’errore. PowerShell try-catch block è un modo potente per catturare gli errori di terminazione, in modo da poterli gestire in modo sicuro senza causare un crash., Aiuta con l’analisi dettagliata e una comprensione del problema pure. Per questi motivi, è un must-have negli script PowerShell.
Leave a Reply