- - PR -
光磁気ディスク(MO)等のエラーについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-05-23 09:32
いつも参考にさせてもらっています。
vb.netで開発しているんですが、 vb4.0やvb6.0の時などはエラーを以下のソースのように取得していました。 vb.netになってからtry〜Catchイベントでエラーを拾っているんですが、 try〜Catchイベントを使用してるときはResumeが使用できないので、 Resumeに変わるものってあるのでしょうか? (マニュアルで探したのですが、発見できませんでした) あとエラーコードってvb.netでも同じ番号なのでしょうか? 誰かご存知の方がいましたら教えてください。 On Error GoTo COPY_Err COPY_Err: Select Case Err.NUMBER Case 61 MSG_STATUS_01 = MsgBox("光磁気ディスク(MO)が容量不足です。_ ERR = " & Error(Err.NUMBER), vbCritical + vbAbortRetryIgnore) Case 68, 71 MSG_STATUS_01 = MsgBox("光磁気ディスク(MO)がセットされていません。_ ERR = " & Error(Err.NUMBER), vbCritical + vbAbortRetryIgnore) End Select Select Case MSG_STATUS_01 Case vbAbort '// 中止 Exit Function Case vbRetry '// 再試行 Resume Case vbIgnore '// 無視 Resume Next End Select |
|
投稿日時: 2003-05-23 14:08
こんにちは。
>>あとエラーコードってvb.netでも同じ番号なのでしょうか? Try〜Catch、例外処理というのは、「エラー」とはちょっと違います。文字通り、例外的な処理をするための物です。普通に使うぶんでは、例外的な処理はエラー処理とほとんど等しい、ということです。 例外にはエラー番号という考え方はありません。なぜなら例外は、例外的な状況を表すものであり、エラー番号によって表そうとしていたものだからです。例外を発生させることを「スローする、投げる」と言いますが(だから捕捉catchする)、例外クラスのインスタンス(への参照)が飛んできます。通常、〜Exceptionというクラスです。IO処理で発生する例外なら、System.IO.IOExceptionか、それから派生するクラスになります。IOExceptionから派生する例外クラスがスローされたと言うことは、それだけでIOに関する処理で例外的な状況が発生したとわかるのです。 Resumeについてですが、発生した例外を元に戻すことはできないので、ループと組み合わせます。 dim CanTerminate as boolean = false do try ' コピー処理 CanTerminate = true catch ex as System.IO.IOException ' 例外処理 messagebox.show(ex.message) end try loop while CanTerminate = false |
|
投稿日時: 2003-05-24 14:42
Jittaさんありがとうございました。
いままで疑問だったTry〜Catchの意味が、Jittaさんの説明で良く解りました。 エラー番号などの考え方ではないということですね。 早速loop処理で実行してみます。 vb初心者なのでまた質問をすると思いますが、 その時はまた教えてください。 |
1