2013-07-03 3 views
7

Guten Tag zu handhaben, würde Ich mag eine Sache über on error resume nextmit „On Error Resume Next“ im klassischen ASP, und wie Fehler all

ist fragen lassen vermuten wir eine Schleife haben einen Re-Cord navigieren durch wie:

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

ich möchte sicher sein, die UPDATE gut geht, und ich möchte, wenn es prüfen, einige Probleme gibt, so habe ich eine Debugging-Funktionen im Code setzen wie:

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 

die Frage ist: während einer Schleife, wenn es einen Fehler auftritt, wird der nächste Zyklus der Fehler da sein (und löst so erneut den Fehlerblock)? oder on error goto 0 löscht das Err-Objekt? mit anderen Worten, wird es als Fehlerbehandlung funktioniert?

Antwort

6

VBScript setzt den Fehler auf 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) 

Es gibt auch die explizite err.clear() ist.

+0

oh, schön zu wissen, die err.clear(), danke! : D –

2

Der richtige Code zu verwenden

Err.Clear 

ich es mit dem folgenden Code getestet haben

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



%> 

Und man kann die richtige Antwort siehe unten ist, die den Fehler zeigt

gelöscht wird

* 13

Typenkonflikt

0 *

0

auf Fehler Lebenslauf nächste Anweisung nur nur die aktuelle Zeile Fehler ignorieren und die Programmsteuerung in der nächsten Zeile senden.

On Error GoTo 0 hält nur die Arbeits von auf Fehler Lebenslauf nächsten .Das es ist.

<% 
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) 
%> 
Verwandte Themen