Почему я не могу назначить переменные объекта в блоке try
?
Если я попытаюсь сделать это и очистить переменную в блоке finally
, я получу ошибку компилятора: «использование неназначенной локальной переменной» . Это не имеет смысла, поскольку переменная объявляется перед блоком try
, а в блоке finally
я сначала проверяю, является ли переменная null
.
Почему следующий код не может быть скомпилирован? Я проверяю, является ли dbc
null
, поэтому нет никаких шансов, что он попытается что-то сделать с неназначенной переменной.
например:
DbConnection dbc;
try {
dbc = <some method call returning an open DbConnection>
// do stuff
} catch (Exception e) { // do stuff }
finally {
if (dbc != null) {
dbc.Close();
}
}