ハンドルされてない例外発生

C#で既存コントロールを継承させて、ユーザーコントロールを

開発している。

メソッド内で入力不正等のエラー情報を呼び出し元クラスに知らせるために

例外をスローすることで知らせている。

デバック環境ではアプリ側で例外をキャッチしているが、運用マシンでは

OS側からのエラー情報表示となり、アプリ側で例外がキャッチできない。

エラー情報で、

——————————————–

JIT デバッグ

Just-In-Time (JIT) デバッグを有効にするには、

このアプリケーション、またはコンピュータ (machine.config) の構成ファイルの

jitDebugging 値を system.windows.forms セクションで設定しなければなりません。

アプリケーションはまた、デバッグを

有効にしてコンパイルされなければなりません。

例 :

<configuration>

<system.windows.forms jitDebugging=”true” />

</configuration>

JIT デバッグが有効なときは、このダイアログで処理するよりも、ハンドルされていない

例外はすべてコンピュータに登録された JIT デバッガに設定されなければなりません。

——————————————–

とあるので、.NETのmachine.configファイルを記載しているとおりに

修正しているがそれでもうまく動作しない。

他にもいろいろと調査しているがよくはわからない。

ググッテ調査したら同じようなエラー内容がででてきているが、根本的な

問題を解決しないといけないようだ。

それで、例外をスローしているところを修正することにした。

呼び出しクラスでエラー内容をメッセージボックスで表示するように

していたが、本意ではないがユーザークラス側でエラー表示を行い

エラー処理を行った。

また、例外時に呼び出し元側でユーザークラスにフォーカスを設定

していたが、それもこの修正時にbaseを利用してフォーカス設定するように

修正した。

これでなんとか、アプリ側だけで処理できるようになった。

うーん原因なんだが多分、処理を記載しているメソッドは既存クラスを

オーバーライドをしているイベント部分なので、そこで例外をスローしても

キャッチしているのが継承元クラスで、自作コントールとの間に上手に

ハンドル等の情報が伝わっていないのかなと思われる。

多分そこらあたりが問題なのだろう。

直接既存コントールクラスから継承したのも問題なのかもしれない。

コメント