Интернационализация текста.




Класс java.util.Locale позволяет учесть особенности региональных представлений алфавита, символов и проч. Автоматически виртуальная машина использует текущие региональные установки операционной системы, но при необходимости их можно изменять. Для некоторых стран региональные параметры устанавливаются с помощью констант, например: Locale.US, Locale.FRANCE.

Для других стран объект Locale нужно создавать с помощью конструктора:

Locale myLocale = new Locale("bel", "BY");

Получить доступ к текущему варианту региональных параметров можно следующим образом:

Locale current = Locale.getDefault();

Для создания приложений, поддерживающих несколько языков, существует целый ряд решений. Самое логичное из них – использование взаимодействия классов java.util.ResourceBundle и Locale. Класс ResourceBundle предназначен в первую очередь для работы с текстовыми файлами свойств (расширение.properties). Каждый объект ResourceBundle представляет собой набор объектов соответствующих подтипов, которые разделяют одно и то же базовое имя, к которому можно получить доступ через поле parent.

Чтобы выбрать определенный объект ResourceBundle, следует вызвать метод ResourceBundle.getBundle(параметры).

Следующий фрагмент выбирает text объекта ResourceBundle для объекта Locale, который соответствует английскому языку, стране Канаде и платформе UNIX.

Locale currentLocale = new Locale("en", "CA", "UNIX");

ResourceBundle rb =

ResourceBundle.getBundle("text", currentLocale);

 

 

22 Иерархия и способы обработки. Оператор throw.Ключевое слово finally.

Исключительные ситуации (исключения) возникают во время выполнения программы, когда возникшая проблема не может быть решена в текущем контексте и невозможно продолжение работы программы. При возникновении исключения создается объект, описывающий это исключение..

Каждой исключительной ситуации поставлен в соответствие некоторый класс. Если подходящего класса не существует, то он может быть создан разработчиком. Все исключения являются наследниками суперкласса Throwable и его подклассов Error и Exception из пакета java.lang.

Исключительные ситуации типа Error возникают только во время выполнения программы. Такие исключения связаны с серьезными ошибками, к примеру – переполнение стека, и не подлежат исправлению и не могут обрабатываться приложением.

Исключения, наследуемые от класса Exception -Проверяемые исключения должны быть обработаны в методе, который может их генерировать, или включены в throws-список метода для дальнейшей обработки в вызывающих методах. Возможность возникновения проверяемого исключения может быть отслежена на этапе компиляции кода.

Обычно используется один из трех способов обработки исключений:

– перехват и обработка исключения в блоке try-catch метода;

– объявление исключения в секции throws метода и передача вызывающему методу (для проверяемых исключений);

– использование собственных исключений.

* пример # 1: обработка двух типов исключений: TwoException.java */

package chapt08;

public class TwoException {

public static void main(String[] args) {

try {

int a = (int)(Math.random() * 2);

System.out.println("a = " + a);

int c[] = { 1/a };

c[a] = 71;

} catch(ArithmeticException e) { System.err.println("деление на 0" + e);

} catch(ArrayIndexOutOfBoundsException e) {

System.err.println("превышение границ массива: " + e);

}//последний catch

System.out.println("после блока try-catch"); } }

Оператор throw

Исключительную ситуацию можно создать с помощью оператора throw, если объект-исключение уже существует, или инициализировать его прямо после этого оператора. Оператор throw используется для генерации исключения. Для этого может быть использован объект класса Throwable или объект его подкласса, а также ссылки на них. Общая форма записи инструкции throw, генерирующей исключение:

throw объектThrowable;

Объект-исключение может уже существовать или создаваться с помощью оператора new:

throw new IOException();

При достижении оператора throw выполнение кода прекращается. Ближайший блок try проверяется на наличие соответствующего обработчика catch. Инициализация объекта-исключения без оператора throw никакой исключительной ситуации не вызовет.

Если метод генерирует исключение с помощью оператора throw и при этом блок catch в методе отсутствует, то для передачи обработки исключения вызывающему методу тип проверяемого (checked) класса исключений должен быть указан в операторе throws при объявлении метода. Для исключений, являющихся подклассами класса RuntimeException (unchecked) и используемых для отображения программных ошибок, при выполнении приложения throws в объявлении должен отсутствовать.

Ключевое слово finally

Возможна ситуация, при которой нужно выполнить некоторые действия по завершению программы (закрыть поток, освободить соединение с базой данных) вне зависимости от того, произошло исключение или нет. В этом случае используется блок finally, который выполняется после инструкций try или catch. Например:

try {/*код, который может вызвать исключение*/}

catch(Exception1 e1) {/*обработка исключения е1*/}//необязателен

catch(Exception2 e2) {/*обработка исключения е2*/}//необязателен

finally {/*выполняется или после try, или после catch */}

Каждому разделу try должен соответствовать по крайней мере один раздел catch или блок finally. Блок finally часто используется для закрытия файлов и освобождения других ресурсов, захваченных для временного использования в начале выполнения метода. Код блока выполняется перед выходом из метода даже в том случае, если перед ним были выполнены инструкции вида return, break, continue



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: