Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Обработка иключений



В Java, обработка ошибок осуществляется путем перехвата исключительных ситуаций. Возникновение ошибки влечет за собой создание в программе объекта специального типа Throwable (это суперкласс всех исключительных ситуаций). При этом, нормальных ход потока управления прекращается и управление передается обработчику исключений. Если программист не предусмотрел перехват исключительных ситуаций, то их перехватывает обработчик по умолчанию. Он просто выводит на консоль информацию о возникшем исключении (типе и месте возникновения) и прерывет выполнение программы. Можно сделать предположение о том, что пользователи программ чувствовали бы себя, не совсем комфортно, если бы при малейшей ошибке программа прекращала свою работу. Для решения данной проблемы пишутся собственные обработчики исключительных ситуаций. Есть несколько вариантов обработки исключительной ситуации. Рассмотрим пример.

Листинг 10.

1. package javaapplication38;

2. /**

3. *

· @author Nezdoliy

4. */

5. public class Example_exception {

6. public static void main(String[] args) {

7. Example_exception.metod1(0);

8. }

9. public static void metod1(int par1){

10. int b=5/par1;

11. }

12. }

При запуске данного кода мы увидим следующее сообщение в консоли.

Exception in thread "main" java.lang.ArithmeticException: / by zero

at javaapplication38.Example_exception.metod1(Example_exception.java:10)

at javaapplication38.Example_exception.main(Example_exception.java:7)

Обработчик по умолчанию показал, что в программе произошла попытка деления на ноль, был создан объект типа java.lang.ArithmeticException (при этом была показана вся последовательность вызовов до строки в методе, которая непосредственно вызвала исключение). Так отрабатывает обработчик по умолчанию.

Если мы хотим по своему обработать данную ошибку, то это может делаться следующим образом. Пример обработки:

Листинг 11.

1. package javaapplication38;

2. /**

3. *

· @author Nezdoliy

4. */

5. public class Example_exception {

6. public static void main(String[] args) {

7. Example_exception.metod1(0);

8. }

9. public static void metod1(int par1){

10. try{

11. int b=500/par1;

12. System.out.println("Переменная b = "+b);

13. } catch (ArithmeticException e) {

14. System.out.println("В связи с некорректным входным параметром произведена " +

· "его замена на параметр по умолчанию");

15. metod1(5);

16. }

17. }

18. }

Сообщение, которое мы получим на консоли, при запуске данной программы, следующее:

В связи с некорректным входным параметром произведена его замена на параметр по умолчанию

Переменная b = 100

Таким образом если предполагается возникновение исключения на каком-то участке кода,это код располагается в блоке try-catch (смотри строку 10-13 Листинга 11) При возникновении исключения, создается объект типа Throwable и управление передается блоку catch или finally(в данном случае catch, по finally пример будет ниже). В блоке catch в качестве параметра указывается любой тип, суперклассом которого является класс Exception(строка 13,для этого класса суперклассом является класс Throwable) и далее код, который должен выполняться при возниконвении исключения. Если тип возникшего исключения может быть приведен к тому типу, который указан в параметре блока catch, или точно ему соответствует, то код блока catch выполняется. Если нет, то выполняется блок finally и управление передается обработчику исключений верхнего уровня. Если соответствующий обработчик не будет найден, тогда эту ситуацию перехватит обработчик по умолчанию.

Существует еще две конструкции, которые используются при обработке исключительных ситуаций. Это конструкция throw и throws. Первая конструкция используется в тех случаях, когда разработчик считает необходимым принудительно вызвать исключительную ситуацию(например, когда какие-либо переменные принимают значения допустимые для данного типа данных, но ошибочных с точки зрения логики программы. Переменная, в которой хранится температура пациента (тип float), принимает значение >41,9) Вторая конструкция применяется в тех случаях, когда разработчик по каким-то причинам не считает возможным произвести перехват и обработку исключительной ситуации, и предлагает это сделать своим коллегам.





Дата публикования: 2015-04-06; Прочитано: 254 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...