Morpheusweb.it - Risorse per webmaster: script, ASP.NET, C#, Visual Basic .Net, tutorial, asp, javascript, css, php, html, java, ADO, VBScript, forms, frames, Active Server Pages, Dynamic HTML, database, gratis per webmaster e webdesigner

VBScript Error Handling: La gestione degli errori

Error Handling


In ASP non abbiamo dei meccanismi nativi per la gestione degli errori come in altri linguaggi, ad esempio i blocchi try catch di C# o Java.
Esiste però un'istruzione che, se usata nel modo corretto ci consente di gestire gli errori a runtime evitando i classici messaggi di errore di IIS

L'istruzione in questione è

<%
On Error Resume Next
%>


La quale dice all'interprete ASP di continuare l'esecuzione ignorando l'errore, invece di fermare l'esecuzione e mostrare il messaggio di errore
Una volta detto all'interprete di ignorare l'errore, dobbiamo fare in modo di gestirlo e mostrare all'utente un messaggio. Una volta "trappato" l'errore occorre "gestirlo"

Esiste un oggetto "Err" che può essere utilizzato a tale scopo.
Questo oggetto ha diversi metodi e proprietà che possono essere usati per i nostri scopi.

Metodi

Metodo Descrizione
Clear Ripulisce l'oggetto Err, e deve essere usato una volta che abbiamo gestito l'eccezione
Raise Solleva in modo esplicito un'eccezione

Proprietà

Proprietà Descrizione
Description Mostra la descrizione dell'errore
HelpContext Permette di impostare o recuperare un id di contesto per l'errore
HelpFile Permette di impostare o recuperare un file di hepl per l'errore
Number Rappresenta il numero di errore vbscript
Source Il codice sorgente che ha generato l'errore

Una volta visti metodi e proprietà, vediamo un esempio di gestione di errori in cui in caso di eccezione, inviamo una mail all'amministratore con la descrizione dell'errore e reindirizziamo l'utente in una pagina di spiegazione.

<%
On Error Resume Next
'codice...
'la riga che genera l'errore
Response.Write(10/0)

'Gestisco l'errore
If Err.Number <> 0 then
  NumeroErrore = Err.Number
  DescrizioneErrore = Err.Description
  Pagina = Request.ServerVariables("url")
  Call GestisciErrore(NumeroErrore, DescrizioneErrore, Pagina)
End If


'La procedura per la gestione dell'errore
Sub GestisciErrore(NumeroErrore, DescrizioneErrore, Pagina)
  'compongo il messaggio
  Messaggio = "Errore nell'appicazione" & vbCrLf
  Messaggio = Messaggio & "Numero errore: " & NumeroErrore & vbCrLf
  Messaggio = Messaggio & "Descrizione Errore: " & vbCrLf
  Messaggio = Messaggio & DescrizioneErrore & vbCrLf
  Messaggio = Messaggio & "Pagina: " & Pagina & vbCrLf
  'invio la mail
  Set objMail = Server.CreateObject("CDONTS.NewMail")
  objMail.From = "Erors@myweb.it"
  objMail.To = "webmaster@myweb.it"
  objMail.Subject = "Errore nell'applicazione"
  objMail.Body = Messaggio
  objMail.importance= 0
  objMail.Send
  Set objMail = Nothing

  'ripulisco Err
  Err.Clear
  'redirigo l'utente

  Response.Redirect("PaginaMessaggio.asp")
End Sub
%>


Vediamo come funziona.

Viene effettuato un test su Err.Number, se questo è diverso da 0, vuol dire che si sono verificati errori a runtime.
In quel caso lancio una proceura che invia la mail all'amministratore con i dettagli dell'errore.

In GestisciErrore, potrei anche inserire funzioni di log che memorizzano le informazioni su database o file di testo.


Stampa la pagina


 

Inizio pagina

risorse per webmaster