Может ли finally срабатывает если Ecxeption возник перед try? - C#
Формулировка задачи:
Кратко опишу ситуацию.
Есть следующий код:
Код метода OpenConnection()
Когда проблемы с сетью может возникнуть исключение в методе OpenConnection(), а он розположен перед try на верхнем уровне, при этом незнаю как, но програма заходит в finally и вызиваеться CloseConnection(). Помогите рзобраться, насколько я знаю при возникновении исключния перед try программа просто должна завершиться аварийно, или я чего-то непинимаю?
DaoSiteSettings dao = new DaoSiteSettings(); dao.OpenConnection(); try { _homePageSettings = dao.GetHomePageSettings(siteId); } finally { dao.CloseConnection(); }
public void OpenConnection() { try { switch(_connection.State) { case ConnectionState.Broken : _connection.Close(); _connection.Open(); break; case ConnectionState.Closed : _connection.Open(); break; } } catch (Exception) { _connection.Close(); _connection = GetAvailableConnection(); if (_connection == null) throw; } if (_connection.State != ConnectionState.Open) OpenConnection(); }
Решение задачи: «Может ли finally срабатывает если Ecxeption возник перед try?»
textual
Листинг программы
DaoSiteSettings dao = new DaoSiteSettings(); dao.OpenConnection(); Debug.WriteLine("before try"); try { _homePageSettings = dao.GetHomePageSettings(siteId); } finally { Debug.WriteLine("in finally"); dao.CloseConnection(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д