从其他DLL捕获C#未处理的异常

时间:2011-10-06 21:04:50

标签: c# exception

我必须将我的应用程序的一部分拆分为dll。

我的Application main中有一个未处理的异常事件,我在其他DLL中抛出异常以测试异常转储过程。

问题是它只能在构造函数中抛出自定义异常时才能捕获它们。

我假设我的自定义异常可能被一个系统包装,但它也不能被零除(再次,测试)。

我做错了什么?

在下面的代码中。我的处理程序中没有人真的被召唤过。该应用程序静默终止。

MAIN.DLL

    static void Main()
    {
        Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(Application_UnhandledException);
        Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
        Application.Run(new Form1());
    }

    public static void Application_UnhandledException(
        object sender, UnhandledExceptionEventArgs e)
    {

        MessageBox.Show(e.ExceptionObject.ToString());

    }

    public static void Application_ThreadException(
object sender, ThreadExceptionEventArgs e)
    {

        MessageBox.Show(e.Exception.ToString());

    }

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        dcp.Init();
    }

    public static DefaultCommandProcessor.Dcp dcp = new DefaultCommandProcessor.Dcp();
}

其他DLL

    public partial class Dcp : Form
    {
        public Dcp()
        {

            int y = 0;
            int x = 4 / y;  // caught in unhandled exception event in app.
        }
        public Int32 Init()
        {

            int y = 0;
            int x = 4 / y; // not caught
        }
    }

0 个答案:

没有答案