Эквивалент .Net set_unexpected ()
-
05-07-2019 - |
Вопрос
Существует ли .net, эквивалентный функциональности C ++ непредвиденный () / set_unexpected ()?
<Ч>Изменить . Извините, некоторые детали ранее пропущены:
Язык: C # 2.0
У меня есть несколько устаревших приложений, которые, кажется, где-то создают необработанное исключение. Я просто хочу что-то предпринять, чтобы избавить клиента от боли, пока я не укажу фактический источник проблемы. Насколько я знаю, в C ++ функция, на которую указывает set_unexpected (), вызывается, когда необработанное исключение в противном случае попадает в основную подпрограмму. Отсюда мой вопрос о .net эквивалентной функциональности. Р>
Решение
Существует 3 возможных сценария обработки необработанных исключений в зависимости от типа приложения:
<Ол>Для приложений ASP.NET в Global.asax создайте:
protected void Application_Error (Отправитель объекта, EventArgs e)
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не разработчик для C ++, но из того, что я прочитал, это должно ответить на ваш вопрос.
Другие советы
Эти обработчики должны перехватывать самые неожиданные исключения в вашем приложении смешанного режима.
private delegate long UnhandledExceptionFilter(IntPtr exception);
[DllImport("KERNEL32.DLL", SetLastError = true)]
private static extern IntPtr SetUnhandledExceptionFilter([MarshalAs(UnmanagedType.FunctionPtr)] UnhandledExceptionFilter filter);
// put these in your bootstrapper
AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
Application.ThreadException += ApplicationThreadException;
SetUnhandledExceptionFilter(UnhandledExceptionFilter);
void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
...
}
void ApplicationThreadException(object sender, ThreadExceptionEventArgs e)
{
...
}
long UnhandledExceptionFilter(IntPtr exception)
{
....
}