12

こんばんは、お聞きしたいことがありますon error resume next

次のようなレコードセットをナビゲートするループがあるとします。

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

問題がないか確認しUPDATEたいので、次のようなデバッグ機能をコードに追加しました。

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

問題は、ループ中にエラーが発生した場合、次のサイクルでエラーが発生するかどうかです (したがって、エラー ブロックが再びトリガーされます)。またはon error goto 0Err オブジェクトをクリアしますか? つまり、エラー処理として機能しますか?

4

3 に答える 3

10

VBScript は次のエラーをリセットします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)

明示的な もありerr.clear()ます。

于 2013-07-03T10:49:30.093 に答える
2

使用する正しいコードは

Err.Clear

次のコードでテストしました

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



%>

そして、正しい応答が以下にあることがわかります。これは、エラーがクリアされていることを示しています

※13

型の不一致

0*

于 2013-07-03T10:56:16.347 に答える
2

エラー時に次のステートメントを再開すると、現在の行のエラーのみが無視され、プログラム制御が次の行に送られます。

on error goto 0は、 on error resume nextの動作を停止するだけです。それだけです。

<%
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)
%>
于 2016-03-28T09:46:53.650 に答える