2008年01月14日

Visual Basic 6のクラスモジュール内で発生させたエラーが取得できない件

久々の更新はメモ書き風味。

何のことかといえば、VB6で

Public Sub s()
    Err.Raise vbObjectError
End Sub

……なんてクラスを定義して、

Dim c as Class1
Set c = New Class1

On Error Goto ErrHandler
c.s ' エラーが発生して、ErrHandler以下に処理が移ることを期待

ErrHandler:
' エラー処理ごにょごにょ

……しても、ErrHandlerに処理飛ばないで、エラーで落ちる。なんでやねん。ワケ解らん。

んで、検索したらこんなページが引っかかった。

その場合は、呼び出し側にて On Error を使って、例外処理を行うようにしてみてください。
なおその場合、VBのエラートラップモードを、既定の「クラスモジュールで中断」から、
「エラー発生時に中断」にしておく必要があります。
# エラートラップモードを変更しておかないと、開発環境での実行時では、
# クラス内のErr.Raise部で、実行が中断されてしまいますので。

うーん、多分これだろうなぁ。今手元にVB6ないから確認できないけど。しかし、エラートラップモードなんて有ったっけ?

posted by 天井冴太 at 20:12 | Comment(2) | TrackBack(0) | Study | このブログの読者になる | 更新情報をチェックする
投票お願いします 人気blogランキング - 投票する
この記事へのコメント
こんにちは,

韓国で Programmingを勉強しているある大学生です.

ネットサーフィン中に偶然に立ち寄りました.

私も Visual Basicは長い間使って来たが.. 最近来て私は V.B 大臣に C++ MFCや C#を使おうと決心しました

V.Bは Loop speedも遅くて, MultiThreading 度支援しないからです .. -_-

韓国では V.Bを使う人がますます消えている成り行きです.

それでも, 久しぶりに Visual Basic Codeを見たら楽しいですね. ^_^
Posted by JJD at 2008年01月25日 17:44
JJDさん、こんにちは。
まさかこんな場末のblogに韓国の方が来られるとは思いませんでした。

確かにVBはGUIアプリケーションを作ったり、ActiveXを使用したりする場合は非常に便利なんですが、今回の件のように納得出来ない点もチラホラ……
もしかしたら.net以降のVBなら改善されているのかもしれませんが、それならC#を使う方が良いような気もしますね。
Posted by 天井冴太 (AmaiSaeta) at 2008年01月27日 00:56
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

コメント欄右下をドラッグ&ドロップすると、コメント欄の拡大縮小が出来ます。
認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。