Есть ли способ отключить все диалоговые окна при возникновении исключения или ошибки (например, нарушения прав доступа, ошибки indy socket, тайм-ауты и т. д.)? В моей программе они иногда вылетают, но эти ошибки никак не фатальные и их можно игнорировать, только диалоговые окна мешают. Я использую Делфи 7.
Как отключить все исключения в Delphi?
Ответы (4)
Если вы просто не хотите показывать окно исключения, перейдите к:
Инструменты/Параметры/Параметры отладчика/Исключения языка и отключите флажок Уведомлять об исключениях языка. Это справедливо для Delphi 2010.
(Я не помню, тот ли это CheckBox в Delphi 7).
РЕДАКТИРОВАТЬ: В некоторых случаях исключения неизбежны, особенно когда мы работаем с неизвестными файлами из Интернета. Итак, я считаю, что ваши исключения правильно обрабатываются в Indy, просто отключите Уведомлять об исключениях языка
Вы можете настроить событие Application.OnException. Но ИМХО...
- Application.OnException лучше всего подходит для регистрации исключений, которые вы забыли обработать.
- Application.OnException следует использовать для перехвата исключений только тогда, когда вам крайне необходима производительность (в этом случае вы должны предвидеть неработающие пути выполнения).
А также:
- Нарушения прав доступа являются фатальными ошибками — вы должны отследить и избавиться от всех AV.
- Вы не можете скрыть диалоги исключений только путем переопределения Application.OnException - вы должны правильно использовать try finally/except.
try/except.....
- person David Heffernan; 13.06.2012
Обход события Application.OnException. Однако я бы НЕ рекомендовал скрывать каждое исключение, ИМХО, это плохой дизайн.
@ GJ - в Delphi 2007 есть этот флажок. Но опять же, как упоминалось выше, нарушение прав доступа — это не те исключения, которые следует игнорировать.