2012-05-17 2 views
3

У меня есть сомнения относительно TryCatch блоков. Если я получу ошибку в блоке Try, тогда она будет перенаправлена ​​на Catch в соответствии с правилом. Так что я могу установить visible = true для моей метки в catch block.try catch block to display Сообщение об ошибке

т.е. lblError.visible=true;

Правомерно согласно стандартам кодирования? Я новичок в развитии.

ответ

2

Вы можете установить видимость ваших элементов ввода в false в блоке catch и отобразить панель ошибок, например.

+0

спасибо всем, я получил ответ. –

+1

Не забудьте принять ответ. –

0

Правильно, что в этом плохого? Возможно, вам не удобно видеть и устанавливать lblError в catch catch, поскольку try..catch может появиться во многих местах вашего кода, если это так, вы можете обернуть эти две строки в функции и вызвать ее из каждого блока catch.

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

Вы также можете включить раздел CustomErrors в web.config и перенаправить на одну конкретную страницу при любой ошибке, возникшей в сеансе.

try 
{ 
    //statements; 
} 
catch (Exception ex) 
{ 
    ShowError(ex); 
} 

void ShowError(Exception ex) 
{ 
    //Log or Email error first 
    LogOrEmailError(ex); 

    // you can write user friendly message based on the exception provided or a generic error message. 
    lblError.Visible = true; 
    lblError.Text = GetUserFriendlyErrorMessage(ex); // or throw; if you are planing to handle error in global.ascx or through CustomErrors in web.config 
} 
+0

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

+0

@Josh True. Нельзя пытаться показать сообщение об ошибке пользователям! – Writwick

+0

true, я написал комментарий в коде для объяснения этого. –

0

Да, очень. Вы можете писать нормальные строки кодирования в блоке catch.

+0

yep, thats я хочу услышать ... на самом деле им путают писать код в catch или нет. –

+0

@FrankJames: Infact мы используем эту технику (записи в блоках catch), чтобы вызвать метод/функцию logger, которая вставляет какое-то значение в базу данных, когда когда-либо генерируется исключение. Таким образом, мы можем отслеживать ошибки и исключения. –

0

Блок уловов дает разработчику возможность восстановить повреждение, вызванное ошибкой, брошенной в блок try.

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

0

Да, вы можете написать любой код внутри блока catch, даже return из метода. В один момент вы должны использовать блок finaly{}, чтобы освободить любой ресурс, который вы используете в методе, в котором было выбрано исключение (например, вы используете соединение с базой данных).

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