继承Exception类以记录所有后续出现的异常

sha*_*pan 2 c# exception-handling exception

如果我想在整个应用程序中记录所有出现的异常,

我应该继承Exception类并抛出该类的所有异常,

其构造函数将记录错误详细信息..

或任何想法或建议???

Pli*_*lip 6

根据应用程序的类型(ASP.NET/Console等),有不同的方法.

对于Windows Forms应用程序,这是要走的路: -

namespace YourNamespace
{
    static class Program
    {

        [STAThread]
        static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            HandleException(e.Exception);
        }

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            HandleException((Exception)e.ExceptionObject);
        }

        static void HandleException(Exception e)
        {
            //Handle the Exception here
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

在ASP.NET中,您可以使用Global.asax中的Application_OnError事件或使用您自己的HttpModule连接到Application.OnError事件来捕获所有未处理的异常.

您还可以使用这些第三方异常处理程序之一.

ELMAH支持ASP.NET应用程序

http://code.google.com/p/elmah/

Exceptioneer(我们构建这个 - 只是标志着我对该领域的兴趣)支持ASP.NET,控制台应用程序,Windows窗体应用程序,WPF应用程序等.

http://exceptioneer.com/