投稿日 | : 2003/05/23(Fri) 10:51 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: 光磁気ディスク(MO)エラーなどについて |
> try〜Catchイベントを使用してるときはResumeが使用できないので、
> Resumeに変わるものってあるのでしょうか?
試していませんが、こんな感じで対処できないでしょうか。
bolRetry = True
Do
Try
'
'メインの処理
'
bolRetry = False '成功したのでリトライは行わない
Catch eFileNotFound As System.IO.FileNotFoundException
'ファイルが見つからなかったときの処理
'処理を中止するなら、bolRetry を False にする。
'リトライするなら、bolRetry は True のまま。
Catch eIOExcep As System.IO.IOException
'その他のI/Oエラーに対する例外処理
Catch 必要であればさらに別の例外フィルタを記述
':
':
':
End Try
Loop While bolRetry
なお、MSDNの記事にある「Dr. GUI.NET #5」には、以下のような意見も書かれています。
》
》 On Error を含むコードを移植する場合、エラー処理の部分を変更する必要は
》 ありませんが、将来にわたってコードの理解や管理を容易にするためには、
》 エラー処理の更新を検討することをお勧めします。
》
》 新しく書くコードでは、構造化されたエラー処理を使う方が、コードが明快になります。
》 ただし、例外が発生した場所やその直後から実行を再開できる Resume の柔軟性が
》 必要な場合は、非構造化エラー処理(OnError)を使うのも手です。その場合、コードを
》 整理して書くことが大切です。くれぐれもスパゲッティ コードを書かないように!
> あとエラーコードってvb.netでも同じ番号なのでしょうか?
HRESULT系の値については、同じ番号のようです。それ以外のコードはわかりません。m(_ _)m
ただ、エラー番号だけで処理してしまうと、あとから見たときに意味がわかりにくいので、
各種例外クラスを使った判定も併用した方が良いでしょう。