我必须将我的应用程序的一部分拆分为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
}
}