2015-06-03 3 views
2

Поскольку ELMAH регистрирует исключения UNHANDLED, и я хочу регистрировать все ошибки через ELMAH, означает ли это, что я не должен использовать блок try-catch больше в любом месте моего кода? Если я его не использую, он покажет желтый экран смерти, который, я считаю, можно обработать с помощью пользовательских страниц ошибок.Использование Try Catch Block с ELMAH

Итак, я думаю, что блок try-catch будет бесполезен, если вы используете ELMAH, я прав? Если нет, то какие варианты использования try catch с ELMAH?

+1

Я думаю, что вы ошибаетесь! Вам всегда нужно обрабатывать исключения, ELMAH полезен для того, чтобы сообщать вам о необработанных исключениях, о местах, где есть потенциально ошибки. Вы можете исправить эти места путем дополнительной проверки (например, if & else), а затем вы можете продолжить выполнение кода или показать пользователю значимое сообщение или позволить обрабатывать пузырь исключительных ситуаций до тех пор, пока не будет обработан ELMAH. –

+1

Обычно комбинация. Поймайте ошибки, о которых вы можете что-то сделать, пусть ELMAH поймает остальных. http://stackoverflow.com/questions/21862753/log-exceptions-handled-in-try-catch-with-elmah –

+0

@SteveGreene Что делать, если я хочу войти в ELMAH из ошибок, которые я поймал из блока catch? Я хочу записать все ошибки в ELMAH, включая места в моем коде, где я ожидаю сбой (например, доступ к DB). – Chris

ответ

1

Вы ошибаетесь. Только потому, что ELMAH предоставляет некоторые функции ведения журнала (и многое другое) вокруг необработанных исключений, не означает, что все исключения, как предполагается, необработаны.

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

Пример: если ваше приложение интегрируется с сторонней службой, которая не работает, вы, скорее всего, получите исключение, которое вы должны обработать, например. g .:

try { 
    .. call third party service 
} catch (TimeOutException toe) { 
    .. handle such as redirection 
} 
+0

Спасибо! Для вашего примера, что, если я хочу зарегистрировать исключение тайм-аута в ELMAH, как мне это сделать? Я могу повторно бросить, но вещь «ручка, такая как перенаправление», не будет удалена, если я положу повторный бросок раньше. Если я поместил его после перенаправления, я думаю, что повторный бросок тоже не пострадает. – Chris

+0

Вы не можете перенаправлять * и * бросать; вы делаете то или другое. Сначала выполните регистрацию [logging with ELMAH] (http://www.asp.net/web-forms/overview/older-versions-getting-started/deploying-web-site-projects/logging-error-details-with-elmah -cs), перенаправление. Готово. Если вы выбросите исключение и не обработаете его самостоятельно, ваше приложение взорвется. –