русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Catch (NumberFormatException eNumberFormat)


Дата добавления: 2013-12-23; просмотров: 1616; Нарушение авторских прав


Catch (ArithmeticException eArithmetic)

Try

String input;

Int i;

Public class JavaApplicationTry

Package javaapplicationtry;

Действия в исключительной ситуации

Catch (тип исключения)

Проверяемый код программы

Try

{

}

{

}

Каждый блок catch() перехватывает исключение только одного типа – того, который указан в его аргументе. Но можно написать несколько блоков catch() для перехвата нескольких типов исключений.

Если исключительных ситуаций не было, то операторы блока try выполняются в обычном порядке, после чего выполняются операторы программы, следующие за блоком catch () – блок перехвата не выполняется.

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

Пример: определить значение переменной действительного типа и целого типа i=y/x, причем значение знаменателя ввести с помощью диалогового окна:

 

import java.io.*;

import javax.swing.*;

{

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

{

double x, y=5.0, z=0;

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

{

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

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

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

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

}

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



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

}

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

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

}

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

}

}

В этой программе eArithmetic – объект класса ArithmeticException – арифметические ошибки, eNumberFormat – объект класса NumberFormatException – некорректное преобразование строки в число.

При вводе корректного значения знаменателя, например, x=2.0, на консоль будет выведено:

x=2.0 z=1.5811388300841898 i=2

В конце вызова z=1.5811388300841898

Введем отрицательное значение знаменателя: x=-2.0:

x=-2.0 z=NaN i=-2

В конце вызова z=NaN

Таким образом, извлечение квадратного корня из отрицательного числа в Javaразрешено и дает значение NaN (исключительная ситуация не возникает).

Введем нулевое значение знаменателя: x=0.0:

Ошибка: деление на ноль, java.lang.ArithmeticException: / by zero

В конце вызова z=Infinity

Таким образом, деление на ноль действительных чисел в Javaразрешено и дает значение Infinity (исключительная ситуация не возникает). При делении на ноль целых чисел возникает исключительная ситуация, формируется объект-исключение eArithmetic, который и перехватывается блоком catch (ArithmeticException eArithmetic).

Введем некорректное значение знаменателя: x=0,0:

Ошибка преобразования из строки в число, java.lang.NumberFormatException: For input string: "0,0"

В конце вызова z=0.0

При этом формируется объект-исключение eNumberFormat, который перехватывается блоком catch (NumberFormatException eNumberFormat).

Во всех случаях после обработки исключительных ситуаций выполняется оператор, стоящий за всеми блоками catch (), в данном случае:

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

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

Изменим предыдущую программу, вынеся деление в отдельный метод:



<== предыдущая лекция | следующая лекция ==>
Действия программы в аварийной ситуации | Catch (NumberFormatException eNumberFormat)


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.