OpenURLを使用して複数のURLのHTMLを取得しています。(For Next文で繰り返し
処理)その際、タイムアウトのエラーが発生した場合、エラーメッセージが
表示され処理が中断します。
For ii = 0 to n
''URL(ii)は取得するURL名
bytestr() = Inet1.OpenURL(URL(ii), icByteArray)
''ここから取得したHTMLの具体的な処理開始
Next ii
何らかのエラーが発生したときエラーメッセージを表示せずその処理を飛ばし次の処理をするにはどのようにすればよいのでしょうか?
"404 Not Found"などはHeader情報でエラーの判別ができるのですが...
以上よろしくお願い致します。
「On Error Resume Next」でトラップするとか。
魔界の仮面弁士さま回答ありがとうございます。
On Errorステートメントも使用しましたが
「実行時エラー'35756' 要求を完了できません。」や「タイムアウトエラー」
のポップアップが表示されます。
私のOn Errorステートメントの使用方法が間違ってる可能性大ですが、
ご迷惑でなければもう少しお付き合いください。
現在以下のようなプログラムを実行しています。
For ii = 0 To cnt
v_inet_err = 0
Inet1.RequestTimeout = 10
bytestr() = Inet1.OpenURL(url(ii), icByteArray)
''-----------------------------------------------
'' if ( 実行時エラー の場合) then
'' call リトライ処理
'' err_url = err_uel & url(ii) & vbCrLf '' ← エラーでうまく
取得できないURLを保存
'' GoTo continue
'' End If
''-------------------------------------------------
err_chk = header_err_chk() '' ← Inet1.GetHeader()を解析して404エラー
の判断
If (err_chk = 1) Then
err_url = err_uel & url(ii) & vbCrLf '' ← エラーでうまく取得
できないURLを保存
GoTo continue
End If
(HTML取得後の処理を実行)
continue:
Next ii
On Error Resume Nextでトラップした場合は上記のコメントアウト
しているIFブロックに入る判断をどうすれば良いか分りかねております。
エラーが判別できれば再度リトライする処理を加えそれでもエラーが発生
する場合はエラーリストという形で別途リストとして保存しようと考えており
ます。
『If Err.Number <> 0 Then』で判定してください。
エラー発生時には、Err.Number に 0以外の値がセットされます。
なお、Err.Clearするか、On Errorステートメントを使うことで、
Err.Numberの値は 0 にリセットされます。
エラー処理の詳細な手順については、VB6のヘルプ(MSDNライブラリ)で、
以下の項を参照してみてください。
[Visual Studio 6.0 ドキュメント]
└[Visual Basic ドキュメント]
└[Visual Basic の使用方法]
└[プログラミング ガイド]
└[Visual Basic を使ってできること]
└[コードのデバッグおよびエラー処理]
魔界の仮面弁士さま>
エラーの取得無事できました。
ご教授ありがとうございました。
ツイート | ![]() |