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

Тема в разделе ".NET", создана пользователем Dash, 25 авг 2009.

  1. Dash

    Dash Гость

    Есть приложение, работающее как сервер для нескольких клиентов (разных по функциональности), и одновременно являющееся клиентом СУБД MySQL. Вся система (сервер и клиенты) "на столе" работает без проблем. Когда же она работает у заказчика, то возникает необработанное исключение. Рабочие условия "на столе" и у заказчика отличаются, и сделать их равными нет возможности. Соответственно нет возможности запустить систему в режиме отладки. В связи с этим я обрабатываю событие AppDomain.CurrentDomain.UnhandledException следующим образом:
    Код (Text):
    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 и в файл. Некоторые исключения действительно регистрируются, т.е. обработчик работает. Но не все.
    В один прекрасный момент (это может быть и через минуту, и через день) при каком-то стечении обстоятельств приложение вылетает со следующим сообщением:
    т.е. где-то возникает исключение, которое ничем не обрабатывается.

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

Поделиться этой страницей