Есть ли .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)
{
....
}
Не могли бы вы подробнее рассказать о том, какого эффекта вы пытаетесь достичь в целом? Скорее всего, идиоматический способ в .NET не будет точно отражать неожиданный / set_unexpected.