Наконец, содержимое блока работает перед тем, как попробовать?
Как я могу исправить приведенный ниже код, чтобы, наконец, часть не была перезаписана, и я мог видеть "Это обычный текст" в тексте 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.
И, наконец, блок Наконец будет выполняться.