Может ли finally срабатывает если Ecxeption возник перед try? - C#

Узнай цену своей работы

Формулировка задачи:

Кратко опишу ситуацию. Есть следующий код:
 DaoSiteSettings dao = new DaoSiteSettings();
 dao.OpenConnection();
 try {
     _homePageSettings = dao.GetHomePageSettings(siteId);
 } finally {
      dao.CloseConnection();
 }
Код метода OpenConnection()
        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();
        }
Когда проблемы с сетью может возникнуть исключение в методе OpenConnection(), а он розположен перед try на верхнем уровне, при этом незнаю как, но програма заходит в finally и вызиваеться CloseConnection(). Помогите рзобраться, насколько я знаю при возникновении исключния перед try программа просто должна завершиться аварийно, или я чего-то непинимаю?

Решение задачи: «Может ли 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();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.625 из 5
Похожие ответы