Финал: отключить полиморфные переключатели ~
Изменить переменные: переменные не могут быть изменены
Изменить класс: классы не могут быть унаследованы
Метод изменения: метод не может быть переписан
Наконец: последний блок операторов, используемый в обработке исключений
Создается ли исключение или нет, оно должно быть выполнено ~~~
Код Java
открытый окончательный класс наконец -то {public static void main (string [] args) {try {бросить новый NullPointerException (); } catch (nullPointerException e) {System.out.println («Программа бросает исключение»); } наконец {System.out.println («Блок окончательного оператора был выполнен»); }}}Использование наконец -то ключевые слова на Java
По сравнению с другими языковыми моделями, наконец -то ключевое слово является лучшим дополнением к модели обработки исключений Java. Наконец -то структура позволяет коду всегда выполнять независимо от того, происходит ли исключение. Используйте, наконец, для поддержания внутреннего состояния объекта и очистки ресурсов, не связанных с памятью. Без, наконец, ваш код будет сбит с толку. Например, следующий код показывает, как вам нужно писать код, чтобы бесплатно не предлагать ресурсы, не используя, наконец:
Импорт java.net.*; Импорт java.io.*; класс безфинально {public void foo () бросает ioException {// Создать сокет на любом свободном портоде Serversocket ss = new Serversocket (0); try {rocket socket = ss.accept (); // другой код здесь ...} catch (ioException e) {ss.close (); // 1 брось E; } // ... ss.close (); // 2}}Этот код создает розетку и вызывает метод принятия. Прежде чем выходить из метода, вы должны закрыть этот розетка, чтобы избежать уязвимостей ресурсов. Чтобы выполнить эту задачу, мы называем Close at // 2, что является последним утверждением метода. Но что произойдет, если в блоке TRY происходит исключение? В этом случае близкий вызов в // 2 никогда не бывает. Поэтому вы должны поймать это исключение и вставить еще один вызов, чтобы закрыть в // 1, прежде чем переиздать это исключение. Это гарантирует, что гнездо закрыт перед выходом из метода.
Написание такого кода является как обременительным, так и склонным к ошибкам, но это необходимо без, наконец. К сожалению, в языках без механизма, наконец, программисты могут забыть организовать свой код таким образом, что приведет к уязвимости ресурсов. Наконец, пункт в Java решает эту проблему. Наконец, предыдущий код может быть переписан в следующую форму:
Импорт java.net.*; Импорт java.io.*; класс с финансированием {public void foo2 () бросает ioException {// Создать сокет на любом свободном портоде Serversocket ss = new Serversocket (0); try {rocket socket = ss.accept (); // другой код здесь ...} наконец {ss.close (); }}}Блок, наконец, гарантирует, что метод закрытия всегда выполняется независимо от того, выдается ли исключение в блоке TRY. Поэтому гарантируется, что метод закрытия всегда вызывается перед выходом из метода. Таким образом, вы можете быть уверены, что розетка закрыта и что вы не просочились в ресурсах. В этом методе нет необходимости. Блок подъема приведен в первом примере, чтобы закрыть розетку, теперь он наконец закрыт. Если вы предоставите блок улова, код в блоке, наконец, выполняется после завершения блока подъема.
Наконец -то блок должен использоваться с блоком Try или Try/Catch. Кроме того, невозможно выйти из блока Try, не выполняя его, наконец, блок. Если наконец -то блок существует, он всегда будет выполняться. (Этот оператор верен с этой точки зрения. Существует способ выйти из блока TRY, не выполняя блокировки, наконец,. Если код выполняет систему. Exexit (0); оператор внутри TRY, приложение заканчивается, не выполняя наконец -то выполнение. С другой стороны, если вы выключите во время выполнения блока Try, наконец не выполняется.