Рейтинг:
1
Hemant Singh Rautela
Вы должны написать код как :
Просто простой код для возврата значения с помощью блока finally... Как окончательно использованные для очистки ресурсы...
если возникнет какая-либо ошибка, то catch выполнит ее и установит возвращаемое значение...
public bool func_a()
{
bool bFlag = true;
try
{
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
con.Open();
// do whatever...
bFlag = true;
}
catch (Exception ex)
{
bFlag = false;
}
finally
{
con.Close();
}
return bFlag;
"Как, наконец, используется для очистки ресурсов, так что контроль не может быть выход без его завершения (очистка всех ресурсов)... "
И поскольку блок finally всегда будет выполнять любое условие ошибка возникает или нет
Таким образом, мы не можем поместить два оператора возврата в поток... как вы использовали в блоке try, а затем в блоке finally.(если ошибка не произошла, то ваш код try будет выполнен тогда finally..so как может работать два оператора return... )
--------------
Это ошибка времени компиляции для оператора break, continue или goto для передачи управления из блока finally. Когда оператор break, continue или goto возникает в блоке finally, цель оператора должна находиться в том же блоке finally, иначе возникает ошибка времени компиляции.
От :
http://msdn.microsoft.com/en-us/library/aa664733%28v=vs.71%29.aspx[
^]
:-)
Suvabrata Roy
Сначала прочтите вопрос, а затем ответьте, что он/она спросил, почему и как.
Hemant Singh Rautela
Я сделал и то, и другое....: -) просто прочитал полный ответ (как, наконец, используется для очистки ресурсов)
и дайте ему решение, как это будет работать...
да, я пропустил еще одну строчку Для и наконец : "как, наконец, используемая для очистки ресурсов, поэтому управление не может выйти без его завершения.. "
Я его обновлю...
Suvabrata Roy
1. это обычная практика открывать соединение при написании какой-либо функции?
2. Перед использованием любой переменной в блоке Finally проверьте ее ссылку или значение, возможно, переменная не будет инициализирована.
BillWoodruff
Я думаю, что этот ответ заслуживает #4: автор показывает пример кода с использованием try/catch, и объяснение является разумным.
Hemant Singh Rautela
Проголосуйте за него с 5... :-) (Я не открывал эту ссылку)
BillWoodruff
Если вы не скажете мне, как голосовать, я не скажу вам, как думать :) Голос № 4-это очень хороший голос !
Hemant Singh Rautela
ОПС моя ошибка ! извините, что я не прочитал ваш комментарий должным образом.. Я просто подумал, что вы предлагаете мне решение 4-более подходящий ответ...
И спасибо за то, что проголосовали за меня независимо от того, как много в цифрах (так как я с удовольствием принимаю все 1-5 голосов...)
BillWoodruff
Кой бат нахин :)
Рейтинг:
0
Suvabrata Roy
Привет,
Читайте об этом напоследок : http://msdn.microsoft.com/en-IN/library/zwc8s4fz.aspx[^]
Теперь блок finally используется для очистки ресурсов, которые используются или инициализируется в блоке try, наконец, необходимо запустить блок какой код там надо выполнять каждый раз попробовать была выполнена ( если исключение возникает тогда тоже) так что, если вы вернетесь из блока finally будет прервать выполнение потока и приложение может плохо себя вести.
Если я не написал ни одного блока Catch и возникло исключение ?
Тем не менее, наконец, блок будет выполнен, но он имеет некоторую зависимость от настроек CLR вашей машины. Для дополнительной информации : http://msdn.microsoft.com/en-us/magazine/cc793966.aspx[^]
Спасибо,
Suvabrata
Рейтинг:
0
Gihan Liyanage
Я думаю, что здесь вы, возможно, пытаетесь использовать блок finally странным образом. В рамках документации символизирует, наконец, как следует:
The finally block is useful for cleaning up any resources allocated in the try block.
Если бы это был действительный код, каков был бы ожидаемый результат? Блок finally выполняется после первого возврата. Означает ли это, что метод всегда должен возвращать 5?