Зачем использовать наконец в C #? - PullRequest
174 голосов
/ 14 февраля 2009

Все, что находится внутри блоков finally, выполняется (почти) всегда, так в чем же разница между встраиванием в него кода или его закрытием?

Ответы [ 14 ]

2 голосов
/ 14 февраля 2009

Скажем, вам нужно установить курсор обратно на указатель по умолчанию вместо курсора ожидания (песочные часы). Если перед установкой курсора возникает исключение, которое не приводит к аварийному завершению работы приложения, вы можете остаться с запутанным курсором.

1 голос
/ 20 апреля 2017

Поток управления в блоке "В конце" идет после блока "Попробовать" или "Поймать".

[1. First Code]
[2. Try]
[3. Catch]
[4. Finally]
[5. After Code]

с исключением 1> 2> 3> 4> 5 если 3 имеет оператор Return 1> 2> 3> 4

без исключения 1> 2> 4> 5 если 2 имеет оператор возврата 1> 2> 4

1 голос
/ 14 февраля 2009

Ааа ... Я думаю, я понимаю, что вы говорите! Прошло несколько секунд ... вы задаетесь вопросом "зачем размещать его в блоке finally, а не после блока finally, и полностью за пределами try-catch-finally".

Например, это может быть потому, что вы останавливаете выполнение, если вы выдаваете ошибку, но вы все еще хотите очистить ресурсы, такие как открытые файлы, соединения с базой данных и т. Д.

0 голосов
/ 13 апреля 2016

Окончательно Блок

Если у вас есть один или несколько операторов, которые должны выполняться перед выходом из структуры Try, используйте блок Finally. Блок Finally полезен для запуска любого кода, который должен выполняться, даже если есть исключение. Управление передается в блок Finally независимо от выхода из блока Try ... Catch. Управление передается блоку Finally непосредственно перед тем, как оно выходит из структуры TryCatch. Это верно, даже если исключение происходит где-либо внутри структуры Try. Код в блоке Finally выполняется, даже если ваш код встречает инструкцию Return в блоке Try или Catch.

Недопустимо явно передавать выполнение в блок Finally.

Передача выполнения из блока Finally недопустима, за исключением исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...