Причины и сценарии для использования Try и, наконец, не используют улов
В инструментарии для параллелистики JDK многие обработки исключений используют следующую структуру, такую как AbstractExeCutorService, то есть только попытка и, наконец, нет улова.
Класс x {Private Final Reentrantlock Lock = new Reentrantlock (); разблокировать ()}}}Зачем использовать эту структуру? Каковы преимущества? Сначала посмотрите на следующий код
public void testryandfinally (String name) {try {name.length (); // nullpointerException} Наконец {System.out.println ("aa");Результатом выполнения передачи NULL Метод является: распечатать AA на консоли и бросить NullPointerException. Процесс выполнения - сначала выполнить блок TRY, выполнить наконец -то блок после того, как произошло исключение, и, наконец, бросить исключение в Try to Caller. Этот результат выполнения очень нормально, потому что нет обработчика исключений, все методы могут бросить только сгенерированное исключение;
Каковы преимущества этого подхода? Для Teststryandfinally он делает то, что должно делать, и бросает исключения, которые не может справиться с вызывающим абонентом, он может воспринимать исключения, которые появляются и могут обрабатывать их по мере необходимости. Другими словами, эта структура реализует разделение обязанностей, реализует развязку обработки исключений и очистки исключений и позволяет различным методам сосредоточиться на том, что им следует делать. Итак, когда использовать Try-Finally, а когда использовать Try-Catch-Finally? Очевидно, это зависит от того, может ли сам метод обрабатывать исключения, которые появляются в TRY. Если вы можете справиться с этим сами, поймайте его напрямую, не бросая его вызывающему методу; Полем То есть объявить исключение, что броски могут появиться в подписи метода и не могут быть обработаны сами по себе, но делайте то, что вы должны делать в рамках метода.
Ситуация, когда утверждение наконец не будет выполнено
Единственная ситуация, когда оператор Java, наконец, не будет выполнена, заключается в том, что метод System.Exit (), используемый для прекращения программы, выполняется в первую очередь.
Общественный класс Тест {public void main (string [] args) {try {System.out.println ("start"); } System.out.println ("end");Результатом вывода:
Начинать
Конечно, если власть внезапно отключается при выполнении оператора общего оператора TRY без оператора System.Exit (), все процессы будут прекращены, а оператор, наконец, не будет выполнен.