Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Java.doc
Скачиваний:
836
Добавлен:
04.06.2015
Размер:
5.55 Mб
Скачать

Import java.Io.*;

Import javax.Swing.*;

public class JavaApplicationTry

{

private static int delenie(int a, int b) // метод с делением

{

return a/b;

}

public static void main(String[] args) throws IOException

{

double x, y=5.0, z=0;

int i;

String input;

input=JOptionPane.showInputDialog("Введите значение знаменателя:");

try

{

x=Double.parseDouble(input); //преобразование типов

z=Math.sqrt(y/x); // извлечение квадратного корня

i=delenie((int)y,(int)x); // целочисленное деление

System.out.println("x=" + x + " z=" + z + " i=" + i);

}

catch (ArithmeticException eArithmetic)

{ // перехват целочисленного деления на ноль

System.out.println("Ошибка: деление на ноль, " + eArithmetic);

}

catch (NumberFormatException eNumberFormat)

{ // перехват ошибки преобразования

System.out.println("Ошибка преобразования из строки в число, " + eNumberFormat);

}

System.out.println("В конце вызова z=" + z);

}

}

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

ВJavaсуществует целая иерархия классов, предназначенных для обработки исключительных ситуаций. В вершине этой иерархии находится суперклассThrowable(отthrow able– способный возбудить). ОтThrowable наследуются классыError(ошибка) иException(исключение). Объекты классаError-неконтролируемые(непроверяемые) исключения, которые невозможно перехватить в блокахcatch. Такие исключения представляютфатальныеошибки, после которых нормальная работа программы невозможна, например, переполнение стека. Объекты классаException контролируемыеисключения. У этого класса есть подкласснеконтролируемыхисключенийRuntineExceptionошибок времени выполненияпрограммы, которые, однако, перехватываются программами пользователя. Исключения для этого класса определяются автоматически. Подклассы классаRuntineExceptionне нужно декларировать в заголовке методов после словаthrows.Наиболее распространенные из них:

ArithmeticExceptionошибка, связанная с выполнением арифметических операций, например, деление на нольцелыхчисел,

IndexOutOfBoundsException индекс элемента вышел за пределы допустимого диапазона:

ArrayIndexOutOfBoundsException при обращении к массиву,

StringIndexOutOfBoundsException при обращении к строке,

ArrayStoreExceptionприсваивание элементу массива значения несовместимого типа,

ClassCastException приведение несовместимых типов,

IllegalArgumentExceptionпередача методу недопустимого аргумента,

IllegalStateExceptionприложение не готово к вызову,

NegativeArraySizeExceptionпопытка создания массива отрицательной длины,

NullPointerExceptionпопытка обращения к объекту, содержащему пустую ссылкуnull,

NumberFormatExceptionнеудачная попытка преобразования строки в число,

SecurityExceptionпопытка нарушения режима безопасности.

66

66