«Maledetto errore, mi fa impazzire e non capisco dove si nasconde.» Ve la ricordate questa frase? Quante volte l'avrete detta? Ora, grazie a quest'articolo vi illustro la soluzione offerta da Asp.net per capire la causa scatenante dell'errore. Il classico esempio di errore che si propone sin dai corsi di programmazione base la divisione per zero. Ora, vi illustro la parte di codice che gestisce l'errore illustrandone il funzionamento.
<%@ Page Language="VB" %>
<script runat="server">
sub page_load(obj as object, e as eventargs)
'Dichiarazione delle Variabili
dim intNum1 as integer
dim intNum2 as integer
dim intRisultato as integer
'Prima assegnazione
intNum1 = 15
intNum2 = 0
'effettuo la divisione INTERA generando errore
Try
intRisultato = intNum1 / intNum2
lblErroreTesto.text = intRisultato
Catch strEccezione As Exception
'è stato rilevato un errore
lblErroreTesto.text = "Si è verificato il seguente ERRORE:<br>"& strEccezione.ToString
End Try
'Seconda assegnazione
intNum1 = 15
intNum2 = 7
'effettuo la divisione INTERA NON generando errore
Try
intRisultato = intNum1 / intNum2
lblPositivaTesto.text = intRisultato
Catch strEccezione As Exception
'è stato rilevato un errore
lblPositivaTesto.text = "Si è verificato il seguente ERRORE:<br>"& strEccezione.ToString
End Try
End Sub
</script>
<html>
<head>
<title>Pagina Gestione Errori</title>
</head>
<body MS_POSITIONING="GridLayout">
<form id="frmErrore" method="post" runat="server">
<asp:Label id="lblErrore" style="Z-INDEX: 101; LEFT: 23px; POSITION: absolute; TOP: 12px" runat="server" Font-size="Smaller" Font-Bold="True" Font-Names="Tahoma" BackColor="Black" ForeColor="White">Etichetta Di Errore</asp:Label>
<asp:Label id="lblErroreTesto" style="Z-INDEX: 102; LEFT: 19px; POSITION: absolute; TOP: 32px" runat="server" Width="757px" Height="261px" BackColor="#FFFFC0">Label</asp:Label>
<asp:Label id="lblPositiva" style="Z-INDEX: 103; LEFT: 27px; POSITION: absolute; TOP: 304px" runat="server" Font-Size="Smaller" Font-Bold="True" Font-Names="Tahoma" Width="147px" BackColor="Black" ForeColor="White">Etichetta Senza Errore</asp:Label>
<asp:Label id="lblPositivaTesto" style="Z-INDEX: 104; LEFT: 28px; POSITION: absolute; TOP: 328px" runat="server" Width="741px" Height="190px" BackColor="#FFFFC0">Label</asp:Label>
</form>
</body>
</html>
Come potete osservare, nella parte di scripting lato server si nota la presenza del costrutto:
Try
'Codice asp.net
Catch strEccezione As Exception
'Codice asp.net
End Try
Ora illustro il suo funzionamento. Tra le parole chiave Try e catch, bisogna immettere il codice incriminato per la generazione dell'errore. Tra le parole chiave Catch e End Try, va specificato il comportamento da eseguire in caso di errore nel codice presente all'interno delle parole chiave Try e catch. Come osservate, alla destra della parola chiave Catch vi è un "passaggio" di un valore. In questo caso viene passato sotto forma di stringa (strEccezione) l'eccezione generata in fase di esecuzione del codice incriminato. Nel caso specifico, verrà mostrata la seguente dicitura nella label dedicata a contenere il messaggio d'errore:
Si è verificato il seguente ERRORE:
System.OverflowException: Overflow di un'operazione aritmetica.
at ASP.errore_aspx.page_load(Object obj, EventArgs e)
in c:inetpubwwwrootbookSqlerrore.aspx:line 16