- - PR -
Try Catch文とThrowについて
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-09-12 10:29
追記:
エラーの経路は「ex.StackTrace」で取得しようと思いました。 このようにすれば、各メソッドで「成功」、「失敗」などの情報を 返す必要はなくなりますよね? とても無駄な処理を行おうとしていたことを反省しています。 | ||||||||||||
|
投稿日時: 2008-09-12 10:45
Windows Form のアプリケーションならこっちじゃないかな http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.threadexception(VS.80).aspx _________________ かるあ のメモ と スニペット | ||||||||||||
|
投稿日時: 2008-09-12 11:33
Web アプリケーションなので書く必要もないかもしれませんが、"Application_Error" という正しいスペルで検索すれば疑問が解決するのではないでしょうか。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2008-09-12 11:38
すでにかるあさんが補足されていますが、WindowsアプリケーションではApplication.ThreadExceptionイベントを使用します。 MSDN Libraryの記述が分かりにくいようなら、ジンさんが提示されたリンク先のスレッドで紹介されている、 ・.NET TIPS「適切に処理されなかった例外をキャッチするには?」 ・菊池 Blog「今週のクラス System.Exception」 が参考になるかと思います。 | ||||||||||||
|
投稿日時: 2008-09-12 13:11
皆様ご回答ありがとうございます。
随分理解できてきた気がします。
正しく検索できました。 ありがとうございます。 Web アプリケーションを開発する際には、参考にさせて頂きます。
.NET TIPS「適切に処理されなかった例外をキャッチするには?」 http://www.atmarkit.co.jp/fdotnet/dotnettips/320appexception/appexception.html 上記のページが分かりやすいと思いましたので、 このページを元に、簡単なサンプルを作ってみました。 例外をキャッチしている様子は、再現できたのですが、 2点ほど理解できない点がありました。 また質問させて下さい。 (1)例外のイベントは取得できたが、例外が残るため .NET Framework標準のエラー・ダイアログが表示されてしまう。 どこでどのように例外をクリアしてあげたら良いのでしょうか? (2)例では、Sub Mainから起動させているが プロジェクトのプロパティで「アプリケーションフレームワークを有効にする」 にチェックを入れると、Sub Mainから起動できません。 この場合、MyApplicationからSub Mainを呼べばいいのかと思ったのですが、 そうすると画面終了後に、再度画面が起動してしまいます。 どのように制御したら良いのでしょうか? たびたび申し訳ございませんが、よろしくお願いいたします。 長くなりましたので、私が作成したソースは次に記載させて頂きます。 | ||||||||||||
|
投稿日時: 2008-09-12 13:12
プログラムを張り付けただけで、
分かりづらい記述であると思いましたので、削除致しました。 ご了承ください。 [ メッセージ編集済み 編集者: ジン 編集日時 2008-09-12 16:51 ] | ||||||||||||
|
投稿日時: 2008-09-12 16:49
自己レス
私の(2)の質問は、 Thread.GetDomain().UnhandledExceptionでハンドルすることで 解決できますね。 @IT:.NET TIPS 適切に処理されなかった例外をキャッチするには? http://www.atmarkit.co.jp/fdotnet/dotnettips/320appexception/appexception.html 上記の記事を繰り返し読むことで理解できました。 今週のクラス System.Exception http://www.ailight.jp/blog/kazuk/articles/6298.aspx 初めは難しいと思ったのですが、この記事も複数回読むことで理解できてきました。 とても参考になりました。 ありがとうございます。 (1)は未だに解決できておりません。 Thread.GetDomain().UnhandledExceptionでは、 例外をハンドルしてエラーメッセージを表示しているだけなので、 例外が処理されていたいため、エラーダイアログが表示されてしまうということは 理解できています。 うまく説明できないのですが、 このようなメッセージを表示したくないと思っているのです。 http://www.atmarkit.co.jp/fdotnet/dotnettips/320appexception/appexception_01.gif また、上に私が記載したプログラムは大変分かりづらいと思いますので、 削除させて頂こうと思います。 もしよろしければ(1)へのご回答お願いいたします。 | ||||||||||||
|
投稿日時: 2008-09-14 12:17
ジンさん、はじめまして。
私は以下のようにプログラムしています。 まだまだ未熟者ですが、参考になれば幸いです。
予測できない例外が発生したら、アプリケーションを終了しましょう。 正しい動きをしていないのですから。
こちらが参考になると思います。 http://dobon.net/vb/dotnet/programing/unhandledexception.html My.Application.UnhandledExceptionイベントを使用する方法が書かれています。 便乗して質問させて下さい。 私も似たような件で悩んでおりまして、 既に作成したクラスをどうしようかと考えています。 大量のリソースがあるのですが、すべて戻り値で結果を返しています。 予期せぬ例外が発生したら、「失敗」という意味の戻り値を返しているのです。 すべての修正するのは、とても大変なので、どうしようかと悩んでいます。 現在は、「失敗」が返されてきたら、独自の例外をスローしようかと考えています。 このようなプログラミング設計には問題ありますか? もし宜しければご意見頂けますととても嬉しいです。 宜しくお願い致します。 |