Может ли 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();
}