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

从其他DLL捕获C#未处理的异常,c#,exception,C#,Exception,我必须把我的应用程序分成DLL 我的主应用程序中有一个未处理的异常事件,我正在另一个DLL中抛出异常以测试异常转储进程 问题是,只有在构造函数中抛出自定义异常时,它才能捕获这些异常 我假设我的自定义异常可能被系统1包装,但它也无法捕获被零除的异常(同样,测试) 我会做错什么 在下面的代码中。我的处理程序实际上都没有被调用过。应用程序以静默方式终止 MAIN.DLL static void Main() { Application.SetUnhandledExcep

我必须把我的应用程序分成DLL

我的主应用程序中有一个未处理的异常事件,我正在另一个DLL中抛出异常以测试异常转储进程

问题是,只有在构造函数中抛出自定义异常时,它才能捕获这些异常

我假设我的自定义异常可能被系统1包装,但它也无法捕获被零除的异常(同样,测试)

我会做错什么

在下面的代码中。我的处理程序实际上都没有被调用过。应用程序以静默方式终止

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
        }
    }

提供一些关于如何复制的代码。这只是说您无法捕获DLL中的异常,您甚至无法编译这些异常。另外,它确实按预期工作,您确实可以获得messagebox,但有一个例外。我得到一个带有“System.DivideByZeroException:试图被零除”的消息框。等等。我不能让它在单独的DLL中与DCP一起工作。你必须将DCP放在另一个DLL中。如果所有内容都在同一个DLL中,我可以让它工作。我将它放在它自己的类项目(DLL)中