C#のWinフォームキャプチャグローバル例外

システムを使用しました。
System.Collections.Genericを使用しました。
System.Windows.Formsを使用しました。
System.IOを使用しました。

GobalException名前空間
{
    静的クラスプログラム
    {
        /// <まとめ>
        メインエントリポイント///アプリケーション。
        /// </要約>
        [STAThread]
        静的な無効メイン()
        {
            試み
            {
                //キャッチされない例外処理  
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
                //プロセスUIスレッド例外  
                Application.ThreadException + =新しいSystem.Threading。 ThreadExceptionEventHandler(Application_ThreadException);
                //非UIスレッドの例外を処理  
                AppDomain.CurrentDomain.UnhandledException + =新しいUnhandledExceptionEventHandler(CurrentDomain_UnhandledException)。

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(偽の);
                Application.Run(新しい新規のForm1());
            }
            キャッチ(例外EX)
            {
                文字列STR = "";
                文字列= strDateInfo "は、アプリケーション未処理の例外に表示されます。" + DateTime.Now.ToString()+ "\ R \ n"は、

                IF(!EX = NULL)
                {
                    STR = String.Formatの(strDateInfo + "例外タイプ:{0} \ R \ nを例外メッセージ:{1} \ R \ nの例外情報:{2} \ R&LT \ N-"、
                         EX 。.GetType()名、ex.Message、ex.StackTrace);
                }
                他
                {
                    STR = String.Formatの( "アプリケーション・スレッドエラー:{0}"、EX);
                }


                WRITELOG(STR);
                MessageBox.Show( "!致命的なエラー、作者に連絡してください"、 "システムエラー"、MessageBoxButtons.OK、MessageBoxIcon.Error);
            }

        }

        /// <要約>
        ///このメソッドは、我々はテキストに詳細な情報は、エラーメッセージの後にエラーが美しいフォルムをポップアップするなど、参照されることを書くことは誤りである私に発生した未処理で例外処理をしたいものです
        ///記録はエラーのメールボックスにエラーメッセージを送信するかなど、再初期化、テキスト、データベースに誤った内容であってもよいし、たくさん練習
        ///これは、我々はすべてやる、見る人の目が賢明な知恵を参照してくださいです。
        /// </要約>
        /// <PARAM NAME = "SENDER"> </ param>の
        /// <PARAM NAME = "E"> </ param>の
        静的な無効Application_ThreadException(オブジェクト送信者、System.Threading.ThreadExceptionEventArgs E )
        {
           
            文字列STR = "";
            文字列= strDateInfo "アプリケーション未処理の例外が発生します。" DateTime.Now.ToString +()+ "\ R&LT \ N-";
            例外エラー例外= e.Exception AS;
            IF(エラー!

                STR = String.Formatの(strDateInfo + "例外タイプ:{0} \ Rを\ n例外メッセージ:{1} \のR \ nは例外情報:{2} \ R&LT \ N-"、
                     error.GetType()名、エラー。 .Message、error.StackTrace);
            }
            他
            {
                STR = String.Formatの( "アプリケーション・スレッドエラー:{0}"、E);
            }

            WRITELOG(STR);   
            MessageBox.Show( "!致命的なエラー、作者に連絡してください"、 "システムエラー"、MessageBoxButtons.OK、MessageBoxIcon.Error);
        }

        静的ボイドCurrentDomain_UnhandledException(オブジェクト送信者、UnhandledExceptionEventArgs E)
        {
            文字列str = "";
            例外エラー例外として= e.ExceptionObject。
            ストリングstrDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString()+ "\ R \ n";
            (!エラー= NULL)であれば
            {
                STR = String.Formatの(strDateInfo + "アプリケーションUnhandledException:{0}; \ n \ R堆栈信息:{1}"、error.Message、error.StackTrace)。
            }
            他
            {
                STR = String.Formatの( "アプリケーションUnhandledError:{0}"、E)。
            }

            WRITELOG(STR);
            MessageBox.Show( "致命的なエラー、現在の操作を停止し、速やかに作者に連絡してください!"、 "システムエラー"、MessageBoxButtons.OK、MessageBoxIcon.Error);
        }
        /// <要約>
        ///書き込みファイル
        /// </要約>
        /// <PARAM NAME = "STR"> </ param>の
        静的な無効WRITELOG(文字列STR)
        {
            IF(!Directory.Exists( "ERRLOG"))
            {
                Directory.CreateDirectory(「ERRLOG 「);
            }

            使用して(のStreamWriterのSW =新しいのStreamWriter( "ERRLOG \ ErrLog.txt"、真の)@)
            {
                sw.WriteLine(STR);
                sw.WriteLine( "--------------------------------------------- ------------ ");
                sw.Close();
            }
        }
    }
}

ます。https://www.cnblogs.com/kevinGao/archive/2011/11/02/2233420.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33795806/article/details/93361699