Исторически я всегда писал свой код обработки исключений следующим образом:
Cursor cursor = null;
try {
cursor = db.openCursor(null, null);
// do stuff
} finally {
if (cursor != null) cursor.close();
}
Но недавно, по соображениям удобочитаемости и лени, я начал это делать:
Cursor cursor = db.openCursor(null, null);
try {
// do stuff
} finally {
cursor.close();
}
Неправильно ли мне назначить курсор (дескриптор jdbc, что угодно) из блока try-catch-finally?
Запрет JVM на самом деле взорвать назначение или между назначением и первой строкой того, что находится в блоке try. Я не уверен, что мой старый стиль выдавал какое-либо дополнительное значение, а второе, безусловно, более читаемо и кратким. В литературе обычно всегда идет с первым стилем.
EDIT - предположим, что я доволен любыми исключениями, вызванными openCursor при инициализации курсора, который не попадает в этот блок кода, моя единственная проблема для этого примера - это закрыть курсор, если он назначен и открыт. Также предположим, что я тестирую нули и т.д. И т.д. Yadda... yadda... (Я изменил пример, чтобы отразить это, это не было в центре моего вопроса, поэтому я не включил его в первую версию)