c# - 继承 Exception 类以记录所有后续发生的异常

标签 c# exception

如果我想记录到目前为止整个应用程序中发生的所有异常,

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

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

或者任何想法或建议???

最佳答案

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

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

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
        }

    }
}

在 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/

关于c# - 继承 Exception 类以记录所有后续发生的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1762622/

相关文章:

java - 为什么表达式 (double.MinValue < double.MinValue + 1) 返回 false?

c# - 使用 Razor 为类定义别名

c# - 在运行时更改内部表示

android - 使用Android WebView时JavaScript异常显示在哪里?

java - 我的程序中出现 IllegalStateException?

c# - 检测 WPF 中的系统语言更改

c# - 有没有办法确定 Convert.ToDateTime 是否添加了年份?

c# - 递归的stackoverflow

C++ STL 的 copy() 异常安全

c# - try catch 异常