Обработчик исключений .NET по умолчанию - PullRequest
2 голосов
/ 16 апреля 2010

Так что на днях мое приложение C # упало. Обычно, с приложением .NET, если у вас есть необработанное исключение, вы получите хорошее сообщение об ошибке с трассировкой стека.

Однако в этот раз я получил другое диалоговое окно, в котором просто сообщалось, что произошла ошибка, и предлагалось подключить отладчик, но в диалоге не было трассировки стека, и на машине, на которой он работал, не было отладчика.

Что дает? Почему я не вижу обработчик исключений .NET по умолчанию?

Ответы [ 2 ]

5 голосов
/ 16 апреля 2010

Многие, многие вещи могут вызвать это:

  • Сбои в неуправляемом коде (то есть нарушения доступа, неправильные вызовы GDI, закрытые дескрипторы и т. Д.);
  • Необработанные исключения в фоновых потоках;
  • Необработанные исключения в некоторых обработчиках сообщений (т. Е. OnPaint);
  • Неустранимые исключения, такие как OutOfMemoryException, StackOverflowException, BadImageFormatException и т. Д., Которые могут помешать когда-либо запускать глобальный обработчик исключений;
  • Необработанные исключения, возникающие при инициализации или завершении работы приложения;
  • Аппаратные сбои - плохие сектора памяти / диска и т. Д.
  • ... и многие другие.

Действительно, единственный способ убедиться в этом - определить шаги, которые будут воспроизводить ошибку, и использовать инструмент, такой как WinDbg, для отладки части, которая выходит из строя.

0 голосов
/ 16 апреля 2010

Возможно, вы потерпели крах в неуправляемом коде, который прямо или косвенно используется вашим приложением.

И если вы обращаетесь к защищенной памяти в неуправляемом коде, то все. Вы не собираетесь управлять исключением и распространять что-либо. Ваш процесс рухнет по-старому, и вам понадобятся старомодные инструменты и методы, чтобы найти ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...