Приложение My Delphi (с использованием XE3) должно обрабатывать исключение EInOutError, возникающее при удалении порта USB-Serial. Приложение используется в тестовой среде, поэтому не может полагаться на оператора, чтобы нажать кнопку «ОК», чтобы закрыть диалоговое окно «Ошибка приложения».Как обрабатывать исключение, когда USB-последовательный порт удален неожиданно?
Я попытался следующие:
«попробовать .. кроме» метод - это не улавливает эти исключения. Я думаю, что это не работает, потому что исключение не вызвано кодом в блоке «try». Это похоже на исключение «системного уровня» более низкого уровня.
Я пробовал добавить компонент "ApplicationEvents" в свою форму. Метод OnException улавливает исключение «Custom», генерируемое моим приложением, но не исключение на системном уровне.
Я также попытался добавить глобальный крючок исключения (как описано в Is it possible to have a global exception hook?). Это отчасти работает - это позволяет мне делать вещи до диалоговое окно «Ошибка приложения», но не останавливает диалог с ошибкой.
Буду признателен за любые идеи!
Если попробовать, за исключением блока не отлов исключения, то либо исключение не происходит, когда вы думаете, что это, это быть перехвачены и обработаны другим кодом раньше, чем вы» re пытается поймать его, или это не исключение. Поскольку вы не можете его поймать, как вы знаете, что это исключение EInOutError? –
Вы попадаете в сообщение WM_DEVICECHANGE с типом DBT_DEVICEREMOVECOMPLETE и DBT_DEVTYP_PORT, когда USB-Serial удален? – MBo
Привет, Роб, я получаю диалоговое окно под названием «Ошибка приложения», которое появляется. Сообщение внутри диалогового окна «Исключение EInOutError в модуле Project1.exe в 001C7052». Это приложение работает вне IDE/отладчика. – Nigel