Мне нужно разделить части моего приложения на dll.
У меня в главном приложении есть событие необработанного исключения, и я выкидываю исключения в другой моей 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
}
}