2012-01-21 2 views
3

Я использую Delphi XE2 и Mad. Кроме того, у меня есть приложение, которое использует Indy для некоторых интернет-операций ... проблема в том, что когда возникает простое исключение, так как нет подключения к интернету, которое появляется, появляется всплывающее окно. Я хочу отключить эти исключения, которые происходят из indy.Исключительный фильтр MadExcept

я следующий класс исключения: EIdSocketError сообщение: Socket Error # 11004

Я вошел в диалоговом окне фильтра исключений в безумен, за исключением и положить EIdSocketError на фильтре исключения, но это не работает, что я делаю неправильно?

enter image description here

+0

down причина голосования? – opc0de

+3

В моих восприятиях некоторые спутники иногда имеют плохой день. Объясняя, почему они голосовали, часто раскрывается их личность, которой не всем может понравиться. Во всяком случае, никто не просит повод для голосования - так почему бы дать один голос для голосования? –

+0

Я думаю, что качество доски улучшилось бы, если бы вы могли видеть, кто голосует за вас или нет, а такие люди, которые голосуют без причины, должны быть заблокированы ... – opc0de

ответ

9

Название поднятого класса: EIdSocketError, но вместо этого вы установите фильтр на EIDSocketError. Возможно, MadExcept чувствителен к регистру? Также имейте в виду, что все исключения Indy в конечном счете получены из EIdException, поэтому вы можете захотеть отфильтровать их вместо этого.

В любом случае MadExcept улавливает только неперехваченные исключения, поэтому использование try/except блоков в вашем коде является правильным решением. Именно так Indy предназначен для использования. Если вы получаете исключения, когда компоненты создаются во время выполнения во время потоковой передачи DFM, вы должны были оставить компоненты в активном состоянии во время разработки. Не делай этого. Убедитесь, что компоненты дезактивированы в режиме разработки, а затем активируйте их в своем коде во время выполнения, когда вы будете готовы их использовать.

+0

он чувствителен к регистру, не ожидал, что – opc0de

+0

+1 Никогда не передумал, что madExcept будет чувствительным к регистру в этом случае. –

4

madExcept только поймать те исключения, которые не обрабатываются самим приложением. Таким образом, простой блок try-except, который обрабатывает исключения, о которых идет речь, может быть самым чистым решением вашей проблемы.

+1

, но почему фильтр исключения не работает ... – opc0de

+0

Я не знаю - я обычно не использую эту функцию. –

+1

+1 Это правильный ответ. madExcept не заменяет собой обработчик исключения верхнего уровня верхнего уровня. –

Смежные вопросы