2010-03-22 6 views
1

в команде, если я обрабатывать исключение (вроде так):Причастность (не) Повторное выбрасывание исключения после регистрации

protected void Page_Load(object sender, EventArgs e) 
{ 
    this.exTest(); 

} 


public void exTest() 
{ 
    try 
    { 
     throw new Exception("sjsj"); 
    } 

    catch (Exception ex) 
    { 
     string s = ex.Message; 
     throw; 
    } 

} 

Что прикосновенность не Повторное выбрасывание исключения (перекидной)? Даже без ключевого слова используются пользовательские настройки ошибок в web.config (перенаправление на указанную страницу).

Благодаря

ответ

4

Если вы не повторно выдать исключение, код вызова, предположительно, предположим, что метод работает. Это обычно действительно, очень плохо вещь.

«Нет, мне не удалось полностью загрузить данные вашей учетной записи, поэтому ваш банковский счет имеет баланс по умолчанию 0. Теперь подождите, пока я просто напишу эти данные обратно в базу данных ... Тем временем, не стесняйтесь изучать журнал, который я с благодарностью создал, чтобы показать, почему я завожу ваши данные »;)

Серьезно, регистрирование ошибки не эквивалентно обработка it. Вы должны перестроить исключение, если только вы его не обработали до такой степени, что вызывающий может эффективно предположить, что этого не произошло.

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

+0

Если вы поймаете ошибку только для регистрации с дополнительной информацией, такой как номер класса и номера, а затем повторите попытку, вы добавляете хорошую битку, даже если вы не обрабатываете исключение. Если вы просто разрешите исключение перейти к пользовательскому интерфейсу или где бы то ни было, ex.message, который он приносит, и стек трассировки может затруднить определение того, что именно вызвало проблему. Особенно, если ваш единственный репродуктор находится в производстве. У вас не может быть никакой информации. – user230949

+0

@ user230949: Пожалуйста, * пожалуйста *, не регистрируйтесь и не сверните. Это значительно усложнит процесс регистрации. Всегда либо регистрируйте его, либо реконструируйте, а не оба. – sleske

+0

@sleske: Это зависит от вашей настройки ведения журнала и различных вещей. Я согласен с этим * может * сделать все сложнее, но это также может быть очень полезно. Я бы не хотел обобщать в любом случае. –

1

Последствием не повторного исключения является то, что вы фактически игнорируете исключение. Это редко бывает правильным, поскольку он маскирует ошибки. Игнорирование ошибок может привести к тому, что ваше приложение не будет четко определено со всеми видами странных побочных эффектов. Короче: не ходите туда!

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