2013-07-03 13 views
7

Buon giorno tutti, vorrei chiedere una cosa su on error resume nextusando "On Error Resume Next" in ASP classico, e come gestire gli errori

supponiamo che abbiamo un ciclo di navigare attraverso un set di record come:

Do while not rs.EOF 
query = "UPDATE ...."  
conn.execute(query)  
rs.movenext 
loop 

vorrei essere sicuri che il UPDATE sta andando bene, e vorrei verificare se c'è qualche problema, così ho messo una funzionalità di debug nel codice come:

Do while not rs.EOF 
query = "UPDATE ...." 

on error resume next 

conn.execute(query) 

If Err.Number <> 0 Then 
    Response.write(Err.Number) 
    response.write("<br>") 
    response.write(Err.description) 
    response.write("<br>") 
    response.write(query) 
    response.write("<br><br>") 
end if 

on error goto 0 

rs.movenext 
loop 

la domanda è: durante un ciclo, se incontra un errore, il ciclo successivo sarà l'errore (e quindi si attiva nuovamente il blocco di errore)? oppure on error goto 0 cancellerà l'oggetto Err? in altre parole, funzionerà come una gestione degli errori?

risposta

6

VBScript azzera l'errore sul goto 0:

on error resume next 
i = 1/0 
WScript.echo(err.number) '' prints 11 (div by 0) 
on error goto 0 
WScript.echo(err.number) '' prints 0 (no error) 

C'è anche l'esplicito err.clear().

+0

oh, bello sapere il err.clear(), grazie! : D –

2

Il codice corretto da utilizzare è

Err.Clear 

ho provato con il seguente codice

<%on error resume next 
    response.write (p(10)) 
    Response.write(Err.Number) 
    response.write("<br>") 
    response.write(Err.description) 
    response.write("<br>") 
    Err.Clear 
    Response.write(Err.Number) 
    response.write("<br>") 
    response.write(Err.description) 
    response.write("<br>") 



%> 

e si può vedere la risposta corretta è al di sotto, che mostra l'errore viene eliminato

* 13

Tipo non corrispondente

0 *

0

On Error Resume Next dichiarazione appena ignorare solo l'errore di riga corrente e inviare il controllo del programma alla riga successiva.

On Error GoTo 0 solo arresta la lavorazione del On Error Resume Next .che è tutto.

<% 
on error resume next 
response.write(1/0) 
if err.number <> 0 then 
response.write("<b>" & "err= "&"</b>") 
response.write(err.description) 
response.write("<b>" & " err number= "&"</b>") 
response.write(err.number&"</br>") 
end if 
'after this statement ASP will no longer resume the error and program terminate at here if error occur after this line 
on error goto 0 
response.write(6/0) 
%>