- PR -

Exceptionの内容について

投稿者投稿内容
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2005-12-15 19:18
囚人様ご返答ありがとうございます。

引用:

こういう事を申したのは、ログを取る事自体は良いのですが、どんな例外でもそこで潰すのはよくないだろう、と思うからです。

例えば、StackOverflowException なんて自前で処理はできないです。ここでログをはいて、例外を潰し、その関数を出た後、システムはどうなるでしょう?



なるほど、勉強になります。
先ほどのDubleの関数は一例のつもりでしたので、
処理の仕方に問題があったことを深くお詫びします。

引用:

例外は、予想しているものだけ処理できる。予想外は処理できない。なので予想外の例外は単純にそのメッセージを出力するしかないのではないでしょうか。



では、もし予想外の例外の取得の方法としては、自分が現在使用している
Exceptionの内容をそのまま出すようなものが一般的な方法ということでしょうか?

例外処理の部分がまだまだ勉強不足の為、質問が稚拙で申し訳ありません。
よろしくご返答お願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-15 19:34
引用:

ターキッシュさんの書き込み (2005-12-15 19:18) より:

では、もし予想外の例外の取得の方法としては、自分が現在使用している
Exceptionの内容をそのまま出すようなものが一般的な方法ということでしょうか?


荒い例ですが、こういう感じです。

コード:

namespace TestApplication {

    public class Form1 : System.Windows.Forms.Form {

      #region エントリ ポイント 

        [System.STAThread()]
        private static void Main() {
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            Application.Run(new Form1());
        }

      #endregion

      #region Application.ThreadException イベント 

        private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) {
            MessageBox.Show(
                "処理続行不可能な例外が発生しました。" + System.Environment.NewLine +
                "アプリケーションを強制終了します。" + System.Environment.NewLine + System.Environment.NewLine +
                "例外の詳細 : " + System.Environment.NewLine +
                e.Exception.ToString(),
                "アプリケーションの強制終了",
                MessageBoxButtons.OK,
                MessageBoxIcon.Error
            );

            Application.ExitThread();
        }

      #endregion

    }
}


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-15 19:35
引用:

では、もし予想外の例外の取得の方法としては、自分が現在使用している
Exceptionの内容をそのまま出すようなものが一般的な方法ということでしょうか?


そうなると思います。Exception を予想して受け取るという事は、Exception 以上の事はできないという事です。(リフレクションを使えばできますが、それをするなら、その例外を受け取れば良いだけですね。)

なので、Exception がもってる情報(エラーメッセージ)だけで工夫したいなら、投げる方が何とかしないといけないという事ですね。

_________________
囚人のジレンマな日々
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2005-12-15 20:35
囚人様、じゃんぬねっと様ご返答ありがとうございます。

ThreadExceptionEventHandlerを使用した方法は試したことがなかったので、
試してみたいと思います。

また、自分が今まで使用していた予想外の例外のログ取得の方法も逸脱している
方法ではなかったと解って安心しました。

色々と勉強になりました。
今後もよろしくご指導お願いします。

スキルアップ/キャリアアップ(JOB@IT)