2013-07-03 6 views
7

Dzień dobry wszystkim, chciałbym zadać rzeczą on error resume nextużywając „On Error Resume Next” w klasycznym ASP i jak obsłużyć błędy

załóżmy mamy pętlę, aby poruszać się po rekordów jak:

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

chciałbym mieć pewność, że UPDATE idzie dobrze, i chciałbym, aby sprawdzić, czy istnieje pewne problemy, więc mam umieścić funkcje debugowania w kodzie jak:

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 

pytanie brzmi: podczas pętli, jeśli napotka błąd, następny cykl będzie tam błąd (i tak uruchamia ponownie blok błędu)? lub on error goto 0 wyczyści obiekt Err? innymi słowy, czy będzie działać jako obsługa błędów?

Odpowiedz

6

VBScript resetuje błąd na 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) 

Istnieje również wyraźne err.clear().

+0

oh, miło znać err.clear(), dzięki! :RE –

2

Poprawny kod do wykorzystania jest

Err.Clear 

ja testowałem to z następującego kodu

<%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>") 



%> 

i widać prawidłowa odpowiedź jest poniżej, który pokazuje błąd przejaśniały

* 13

Rodzaj niedopasowanie

0 *

0

na Error Resume Next rachunku prostu zignorować tylko aktualny Error Line i wysłać kontrolę programu do następnego wiersza.

na błąd goto 0 prostu zatrzymuje funkcjonowanie na Error Resume Next Płyty te to.

<% 
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) 
%> 
Powiązane problemy