Обработка исключительных ситуаций
Листинг 16 1 Программа без обработки исключений
Листинг 16.1.
Программа без обработки исключений
class SimpleExt {
public static void main(String[] args)({
int n = Integer.parselnt(args[0]);
System.out.println("10 / n = &qu...
Сообщения об исключительных ситуациях
Рисунок 16.1.
Сообщения об исключительных ситуациях
Программа SimpleExt запущена три раза. Первый раз аргумент args[0] равен 5 и программа выводит результат: "ю / n = 2". После это...
Блоки перехвата исключения
Блоки перехвата исключения
Мы можем перехватить и обработать исключение в программе. При описании обработки применяется бейсбольная терминология. Говорят, что исполняющая система или програм...
Листинг 16 2 Программа с блоками обработки исключений
Листинг 16.2.
Программа с блоками обработки исключений
class SimpleExtlf
public static void main(String[] args){
try{
int n = Integer.parselnt(args[0]);
System.out.println("After par...
Сообщения обработки исключений
Рисунок 16.2.
Сообщения обработки исключений
После первого запуска, при обычном ходе программы, выводятся все сообщения.
После второго запуска, приводящего к делению на нуль, управление ср...
Листинг 16 3 Выбрасывание исключения из метода
Листинг 16.3.
Выбрасывание исключения из метода
class SimpleExt2{
private static void f(int n){
System.out.println(" 10 / n = " + (10 / n));
}
public static void main(St...
Часть заголовка метода throws
Часть заголовка метода throws
То обстоятельство, что метод не обрабатывает возникающее в нем исключение, а выбрасывает (throws) его, следует отмечать в заголовке метода служебным словом thro...
Листинг 16 4 Обработка исключения в методе
Листинг 16.4.
Обработка исключения в методе
class SimpleExt3{
private static void f(int n){ // throws ArithmeticException{
try{
System.out.println(" 10 / n = " + (10 / n) )...
Оператор throw
Оператор throw
Этот оператор очень прост: после слова throw через пробел записывается объект класса-исключения. Достаточно часто он создается прямо в операторе throw, например:
throw new Ar...
Листинг 16 5 Обработка нескольких типов исключений
Листинг 16.5.
Обработка нескольких типов исключений
class SimpleExt4(
public static void main(String[] args){
try{
int n = Integer.parselnt(args[0]);
System.out.println("After parsel...
Перехват нескольких типов исключений
Рисунок 16.4.
Перехват нескольких типов исключений
Таким образом, перемещаясь по иерархии классов-исключений, мы можем обрабатывать сразу более или менее крупные совокупности исключений. Рас...
Иерархия классовисключений
Иерархия классов-исключений
Все классы-исключения расширяют класс Throwabie — непосредственное расширение класса object.
У класса Throwabie и у всех его расширений по традиции два конструк...
Порядок обработки исключений
Порядок обработки исключений
Блоки catch () {} перехватывают исключения в порядке написания этих блоков. Это правило приводит к интересным результатам.
В листинге 16.2 мы записали два бло...
Создание собственных исключений
Создание собственных исключений
Прежде всего, нужно четко определить ситуации, в которых будет возникать ваше собственное исключение, и подумать, не станет ли его перехват невольно перехваты...
Листинг 16 6 Создание классаисключения
Листинг 16.6.
Создание класса-исключения
class CipherException extends Exception{
private String msg;
CipherException(){ msg = null;}
CipherException(String s){ msg = s;}&nb...
Заключение
Заключение
Обработка исключительных ситуаций стала сейчас обязательной частью объектно-ориентированных программ. Применяя методы классов J2SDK и других пакетов, обращайте внимание на то, каки...