VB 6.0 にはグローバル ハンドラがありません。ランタイム エラーをキャッチするには、エラーが発生する可能性があると思われる各メソッドにハンドラを追加する必要があります。アプリケーションのすべてのメソッドにエラー ハンドラを追加する唯一の方法は?
5 に答える
いいえ、VB6 でグローバル エラー ハンドラを追加する方法はありません。ただし、すべてのメソッドにエラー ハンドラを追加する必要はありません。すべてのイベント ハンドラーにエラー ハンドラーを追加するだけで十分です。例: すべてのクリック イベント、ロード イベントなど
エラーは上向きに伝播しますが、VB6 にはスタック トレースを行う方法がないため、どのメソッドがエラーを発生させたのかわかりません。残念ながら、この情報が必要な場合は、各メソッドにハンドラーを追加して、現在の場所をログに記録する必要があります。
また、エラーは上向きに伝播します。メソッドXがメソッドYとZを呼び出す場合、メソッドXの単一のエラーハンドラーが3つのメソッドすべてをカバーします。
昨日、このツールを発見しました:
http://www.everythingaccess.com/simplyvba-global-error-handler.htm
これは、VB6 および VBA アプリケーションでグローバル エラー処理を可能にする商用製品です。
それにはコストがかかりますが、その仕事を完璧に行います。この VB6 マングルに役立つ他のツール (無料) を見たことがありますが、「VB6 の SimplyVB6 グローバル エラー ハンドラー」のように真のグローバル エラー処理をカバーできるツールはありません。
「SimplyVB6 Global Error Handler for VB6」を使用すると、既存のコードの行を変更する必要はなく、コードの行に番号を付ける必要もありません(プラグインなどを介して)。グローバル エラー処理 (メイン モジュールの 1 行のコード) を有効にするだけで、準備は完了です。
「VB6のSimplyVB6グローバルエラーハンドラー」:
- 実際のモジュール名と関数名を使用してコール スタックを表示したり、ソース コード行を表示したりできます。
- P コードでコンパイルされた VB6 プログラムでのみ機能します。
- アーリーバインディングまたはレイトバインディング(DLL Hellなし)で機能します。
私は www.everythingaccess.com とはまったく関係がありません。昨日の午後に見つけてうれしく思いました。顧客の 1 人が VB6 アプリケーションにバグを抱えていたので、この問題をもう一度調べていました。昨日の午後、www.everythingaccess.com サポートと電子メールを交換し、メールごとに評価製品を入手して、このツールをテストすることができました。彼らの Web 側では、VB6 製品の評価版をダウンロードすることはまだ許可されていません。電子メールで送信する必要がありますが、1 時間以内に回答が返ってきます。
エラーが発生した場合、次に再開します - ちょっと近いですが、しばらく経ちました。警告を調べたい場合があります