Наконец, содержимое блока работает перед тем, как попробовать?

Как я могу исправить приведенный ниже код, чтобы, наконец, часть не была перезаписана, и я мог видеть "Это обычный текст" в тексте lbl.Process?

try
{
    grd_Order.SaveClicked(sender, e);
   //This is a button's Clicked event, which redirects to the same page after saving. 
}
catch
{
}
finally
{
   lbl_Process.Text = "This is a regular text"
   //Some more process
}

Изменить: всякий раз, когда я упрощаю свой код, чтобы сделать мой вопрос более понятным, я сталкиваюсь с тем же. Много много недоразумений.

6 ответов

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

Если вы поместите точку останова в свой блок finally, вы заметите, что он всегда выполняется.

Нет смысла в блоке finally в коде, который вы опубликовали. Наконец используется для очистки. Переместите ваш код в блок catch, если он содержит ошибку.

Сделай это:

try
{
    grd_Order.SaveClicked(sender, e);
   //This is a button's Clicked event, which redirects to the same page after saving. 
}
catch (Exception ex)
{
    lbl_Error.Text = "Error Occured " + ex.Message;
}

Если страница перенаправляет, это означает, что ошибка не произошла.

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

Я советую вам не писать сообщения об ошибках в блоке finally. Наконец, блок используется для очистки кода и т. Д.

Здесь вам нужно поместить ваше сообщение об ошибке в блоке catch.

Еще несколько вещей о попытке поймать, наконец,

Блок Try: оберните код блоком try, где вы выполняете какие-либо действия (поиск БД, соединения, вызов функций и т. Д.)

Блок Catch: код, заключенный в эти блоки, будет выполнен, когда в блоке try будет исключение. Если вы хотите, вы можете иметь несколько блоков catch для каждого конкретного исключения.

И наконец: Ну, наконец, блок всегда выполняется независимо от исключения или успешного выполнения блока try, и этот блок используется для очистки кода. рассмотрим этот пример - вы создали соединение с БД, а затем попытаетесь получить некоторые данные, ваше соединение успешно, но в вашем запросе произошла ошибка, затем возникнет исключение, и он будет перехватывать блок. то, что вам нужно сделать, это окончательно закрыть соединение, чтобы у вас не было открытого соединения.

Надеюсь, это поможет.

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

FYI:

Блок Try выполнит код, который он содержит. Если какое-либо исключение запускается во время выполнения, оно будет перехвачено Catch.

И, наконец, блок Наконец будет выполняться.

Другие вопросы по тегам