Unhandledexception не справляется

  • Автор темы Dash
  • Дата начала
D

Dash

#1
Есть приложение, работающее как сервер для нескольких клиентов (разных по функциональности), и одновременно являющееся клиентом СУБД MySQL. Вся система (сервер и клиенты) "на столе" работает без проблем. Когда же она работает у заказчика, то возникает необработанное исключение. Рабочие условия "на столе" и у заказчика отличаются, и сделать их равными нет возможности. Соответственно нет возможности запустить систему в режиме отладки. В связи с этим я обрабатываю событие AppDomain.CurrentDomain.UnhandledException следующим образом:
Код:
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
System.IO.FileStream fs = new System.IO.FileStream("c:\\error.log.txt", System.IO.FileMode.OpenOrCreate);
fs.Write(Encoding.Default.GetBytes("\r\nError:"), 0, "\r\nError:".Length);
fs.Close();
fs = new System.IO.FileStream("c:\\error.log.txt", System.IO.FileMode.OpenOrCreate);

Exception ex = (Exception)e.ExceptionObject;
String сообшение = "Необработанное исключение:\n\n" + ex.Message + "\n\nСтек:\n" + ex.StackTrace;
while(ex.InnerException != null) {
ex = ex.InnerException;
сообшение += "\n\nВложенное исключение:\n" + ex.Message + "\n\nСтек:\n" + ex.StackTrace;
}
fs.Write(Encoding.Default.GetBytes(сообшение), 0, сообшение.Length);
fs.Close();
Журнал.Добавить(EventLogEntryType.Error, сообшение);
}
В обработчике этого события производится запись возникшего исключения в журнал Windows и в файл. Некоторые исключения действительно регистрируются, т.е. обработчик работает. Но не все.
В один прекрасный момент (это может быть и через минуту, и через день) при каком-то стечении обстоятельств приложение вылетает со следующим сообщением:
Не найдено описание для события с кодом ( 0 ) в источнике ( .NET Runtime )
...
В записи события содержится следующая информация:
.NET Runtime version : 2.0.50727.1433 - Application ErrorApplication has generated an exception that could not be handled
т.е. где-то возникает исключение, которое ничем не обрабатывается.

Вопрос: В каких случаях приложение вылетает с исключением, и обработчик UnhandledException не может его поймать?