Избегайте, чтобы “программа прекратила работать” в C#/.NET

Можно использовать ar для создания .a файл (статическая библиотека) от .o, файлы (объектные файлы)

Видят man ar для деталей.

30
задан Community 23 May 2017 в 11:54
поделиться

5 ответов

Всплывающее окно отладчика JIT возникает при возникновении необработанного исключения. То есть, исключение туннелируется на всем пути вверх по стеку к корню любого потока во время выполнения.

Чтобы избежать этого, вы можете обработать событие AppDomain.CurrentDomain.UnhandledException и просто вызвать ] Environment.Exit (1) для корректного завершения.

Это обработает все исключения во всех потоках в вашем домене приложений. Если вы не делаете ничего особенного, ваше приложение, вероятно, имеет только один AppDomain, поэтому достаточно поместить его в свой метод public static void Main :

AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
{
    Console.Error.WriteLine("Unhandled exception: " + args.ExceptionObject);
    Environment.Exit(1);
};

Вероятно, вам следует использовать регистратор NAnt для записи ошибки в этом случае тоже (хотя не могу вспомнить API для этого навскидку.)

Вы также можете отключить JIT-отладку на машине.

43
ответ дан 28 November 2019 в 00:04
поделиться

Просто перехватите исключение и зарегистрируйте / проигнорируйте его.

1
ответ дан 28 November 2019 в 00:04
поделиться

В Windows Vista вы можете отключить это диалоговое окно для своих программ.

Отключите функцию «Отчеты о проблемах и решения». Вы найдете его в Панели управления -> Отчеты о проблемах и решения -> Изменить настройки -> Расширенные настройки -> Отключить мои программы, отчеты о проблемах

1
ответ дан 28 November 2019 в 00:04
поделиться

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

Кстати, помните, что исключения для каждого потока, поэтому, если ваше приложение порождает потоки или использует потоки пула потоков, вам также понадобится обработчик для них.

1
ответ дан 28 November 2019 в 00:04
поделиться

Обычно это происходит только тогда, когда ваше приложение не обрабатывает исключение. Если вы заключите все консольное приложение в блокировку try / catch и просто вернете код ошибки, вы этого избежите.

0
ответ дан 28 November 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: