Было бы трудно изменить все это быстро. Обратите внимание, что иногда в блоке finally
есть еще один блок try-catch
, который перехватывает исключения, возникающие при закрытии ресурса.
Оператор try-with-resources
позволяет обрабатывать исключения закрытия ресурсов (исключения, созданные в методе close
, будут подавлены).
Я не слышал о такой Eclipse
функции, но если вы хотите использовать IntelliJ IDEA Community Edition
IDE только для этой цели.
#1
Вы можете использовать функции проверки кода, которые называются:
'try finally' replaceable with 'try' with resources
.
AutoCloseable used without 'try' with resources
Вам нужно просто нажать Ctrl+Alt+Shift, написать название проверки и нажать Enter. После этого вы увидите места, где IDEA может применить этот шаблон, но имейте в виду, что он не покрывает 100% случаев.
#2
Другой способ, более сложный, но сильно настраиваемый — это Structural Search and Replace
функциональность. Вы можете определить там структуру, которая должна быть изменена:
try {
$type$ $objectName$ = new $concreteType$($args$)
$tryStatements$;
} catch($exceptionType$ $exceptionName$) {
$catchStatements$;
} finally {
$finallyStatements$;
}
И финальная структура:
try ($type$ $objectName$ = new $concreteType$($args$)) {
$tryStatements$;
} catch($exceptionType$ $exceptionName$) {
$catchStatements$;
}
В настройках переменных можно указать, что $concreteType$
реализует AutoCloseable
интерфейс.
Но обратите внимание, что:
- Здесь я избавляюсь от блока
finally
и поддерживаю один блок catch
.
- Также предполагается, что на один блок
try-with-resources
будет открыт один ресурс.
- Как упоминалось ранее, в блоке
finally
нет обработки исключений.
Этот шаблон, безусловно, требует дополнительной работы, и, возможно, это не стоит делать.
person
Maciej Dobrowolski
schedule
26.02.2016