|
Sebbene sia dura ammetterlo, anche noi programmatori commettiamo errori. Sebbene ci impegniamo al 200% per creare
dei codici perfetti, ogni tanto qualche errore ci scappa, e questi, se non gestiti, rendono le nostre pagine
inutilizzabili. In aggiunta a ciò,ogni tanto, può succedere che qualche errore venga generato indipendentemente dalla nostra volontà. Prendiamo in esempio un tentativo di connessione ad un database che non esiste più.
In tutto ciò non c'è nulla di strano, errori ce ne sono e sempre c'è ne saranno, l'importante è essere capaci ad intercettarli durante la loro avvenuta e gestirli nella maniera opportuna. Il problema del gestire gli errori è dovuta al fatto che quando essi avvengono l'esecuzione del codice viene terminata brutalmente ed un messaggio poco confortevole viene presentato all'utente. Ciò non dovrebbe accadere in un sito professionale, in cui gli utenti possono avere poca o nessuna capacità tecnica. Viene poi molto utile essere in grado di intercettare gli errori e scrivere in un log tutte le informazioni possibile di modo che, in un secondo tempo, si possa con calma analizzarli uno ad uno e prendere le necessarie precauzioni affinché essi non avvengano più o almeno avvengano in maniera ridotta.
Il codice scripting ci mette a disposizione un comando On Error, che ci permette di decidere personalmente cosa fare quando un errore viene intercettato. I casi più comuni sono:
· On Error resume Next - Quando un errore accade, ASP fa finta di niente ed esegue la seguente linea di codice. Questo vuol dire che noi prendiamo piena responsabilità dell'evento e ci occupiamo di rimediare ad ogni errore quando accade. Nel far ciò si utilizza l'oggetto
Err;
· On Error NomeSub - Quando un errore accade una specifica procedura viene eseguita. Tale procedura contiene un metodo generale per risolvere i problemi.
Un esempio: La pagina cerca di connettersi ad un DB non esistente. Il comando on error resume next evita che l'errore venga brutalmente visualizzato all'utente. Di contro il programma controlla che la proprietà number dell'oggetto
Err sia diversa da zero. Se ciò accade significa che un errore è stato generato (no error = 0). A questo punto Il messaggio viene presentato in maniera
garbata all'utente e l'esecuzione del codice viene terminata.
|
<%
On Error Resume Next
Dim oConn
Dim oCmd
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("cartella/nomedb.mdb")
OConn.Open
If Err.Number <> 0 Then
Response.Write(Err.Number & " - " & Err.Description
Response.End
End
End IF
Set oCmd = Server.CreateObject("ADODB.Command")
OCmd.ActiveConnection = oConn
oCmd.Execute("Insert into tabella2 (tabella1_ID, campo1, campo2) values (1, 'INSERT', 'xxxx')
If Err.Number <> 0 Then
Response.Write(Err.Number & " - " & Err.Description
Response.End
End
End IF
oConn.closeset
oCmd = nothingset
oConn = nothing
%>
|
Listato 14
<=
Lezione precedente
Torna
all'indice
|