DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DLLから例外をスローしたい

環境/言語:[.NET Framework 1.1]
分類:[.NET]

お世話になります。

アプリケーションをVB.NET(.NET Framework 1.1)を用いてDLLとEXEに分けて
開発していて、DLL内で発生した一部の例外をEXE側でハンドルさせたいと
考えているのですが、DLLの外に例外をスローする事は可能なのでしょうか?
いくつかのサイトや本を見ても該当する情報を見いだすことができず、
掲示板に投稿させて頂きました。もし方法があればご教授をお願い致します。

なお、DLLではフォームウインドウを表示しており、EXEはこのフォームウインドウを
呼び出す役割としていて、オブジェクトを共有させて情報のやりとりを行って
います。

よろしくお願い致します。
> 開発していて、DLL内で発生した一部の例外をEXE側でハンドルさせたいと
> 考えているのですが、DLLの外に例外をスローする事は可能なのでしょうか?
> いくつかのサイトや本を見ても該当する情報を見いだすことができず、
> 掲示板に投稿させて頂きました。もし方法があればご教授をお願い致します。

DLLも同じ.NET製のアセンブリならば、特に変わったことはなく、通常通り
Throwしてやるだけです。

独自例外を発生させたいのであれば、System.Exceptionクラスを継承した
クラスを定義し、これをThrowします。
杉下さん

返信ありがとうございます。
お教え頂いた方法は試して、フォームロード時のLoadサブプロシージャから、
Throw new Exception
として、実行すると、「ハンドルされていない例外が発生しました」という
ダイアログが表示されてしまい、DLLを呼び出しているEXEに例外がスロー
されていないようなのです。

EXE側のコードは
try {
   フォームオブジェクト.ShowDialog();
} catch(Exception ex) {
   例外処理
}

となっており、Exception例外をキャッチできるはずなのですが、
DLL側のプログラムソースになにか前置きの宣言などが必要なのでしょうか?

すみませんが、よろしくお願い致します。



■No7159に返信(杉下朋年さんの記事)
>>開発していて、DLL内で発生した一部の例外をEXE側でハンドルさせたいと
>>考えているのですが、DLLの外に例外をスローする事は可能なのでしょうか?
>>いくつかのサイトや本を見ても該当する情報を見いだすことができず、
>>掲示板に投稿させて頂きました。もし方法があればご教授をお願い致します。
> > DLLも同じ.NET製のアセンブリならば、特に変わったことはなく、通常通り
> Throwしてやるだけです。
> > 独自例外を発生させたいのであれば、System.Exceptionクラスを継承した
> クラスを定義し、これをThrowします。
>
■No7162に返信(ばんさんの記事)
>「ハンドルされていない例外が発生しました」
『ハンドルされていない』がそもそもおかしいですね。
「System.Exceptionの例外がスローされました」になるハズですから。
お世話になります。
返信ありがとうございます。

■No7164に返信(java.lang.Nullpoさんの記事)
> ■No7162に返信(ばんさんの記事)
> >「ハンドルされていない例外が発生しました」
> 『ハンドルされていない』がそもそもおかしいですね。
> 「System.Exceptionの例外がスローされました」になるハズですから。

フォームのLoad処理時ではなく、コンストラクタ処理時にスローを行うことで
処理が正常化できました。
大変お騒がせ致しました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板