Исключения в Java. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение выбрасывается (throw),

Презентация:



Advertisements
Похожие презентации
Обработка исключительных ситуаций. Синтаксис try{ операторы0; } catch (ТипИсключения1 переменная1){ операторы1; } catch (ТипИсключения2 переменная2){
Advertisements

Кафедра ОСУ, Java 2004 Обработка исключений В Java обработка исключительных ситуаций (exception handling) происходит следующим образом: Либо.
Обработка исключительных ситуаций Андрей Дмитриев 2008.
1 Обработка исключений в Java Одно из важнейших преимуществ Java – разработанный на уровне языка механизм обработки исключений. Исключение в Java - это.
Saint Petersburg, 2011 Java Lecture #06 Exceptions.
Часть 1. Основы ООП Исключения.. Структурный подход Неисправимые ошибки – вывести информацию и умереть. Исправимые ошибки – уведомить вызывающую.
Java: интерфейсы, наследование, обработка исключительных ситуаций Вашенков Олег Евгеньевич.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Обработка исключений.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Исключительные ситуации. Схема обработки исключений Try { //охраняемый блок trow (new MyException();) } catch(MyExeption e) { … } catch(Exeption e){ …
Исключения в Java Макаревич Л. Г.. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение.
Обработка исключений Основы метапрограммированияОбработка исключений Основы метапрограммирования.
Программирование Часть 8 Обработка исключений.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
Исключения в EJB Кряжев Василий
Лекция 2 Наследование Наследование в Java имеет тот же смысл, что и в С++. Однако наследование в Java осуществляется при помощи ключевого слова extends.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – обработка ошибок страниц и приложения, Global.aspx.
24. Обработка исключений Основные вопросы Понятие исключительной ситуации. Проблемы при описании и обработке исключительных ситуаций обычными.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Транксрипт:

Исключения в Java

Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение выбрасывается (throw), когда возникает некоторая ситуация. Оно перехватывается в программе (catch). В противном случае оно обрабатывается по умолчанию Throwable Error непроверяемые Exception RuntimeException непроверяемые Все прочие проверяемые Error – фатальные ошибки RuntimeExcaption – компилятор не требует их обязательной обработки Exception – компилятор проверяет предусмотрена ли обработка ошибок

Причины возникновения исключений Попытка выполнить некорректное выражение. Например, деление на ноль, или обращение к объекту по ссылке, равной null, попытка использовать класс, описание которого (class-файл) отсутствует, и т.д. В таких случаях всегда можно точно указать, в каком месте произошла ошибка, - именно в некорректном выражении. Выполнение оператора throw Этот оператор применяется для явного порождения ошибки. Здесь тоже можно указать место возникновения исключительной ситуации. Асинхронные ошибки во время исполнения программы. Все ошибки делятся на: синхронные – возможно найти точное место в коде, которое является причиной возникновения исключительной ситуации асинхронные - гораздо сложнее в обнаружении и исправлении. Обычному разработчику очень трудно выявить причины сбоев в виртуальной машине. Это могут быть ошибки создателей JVM, несовместимость с операционной системой, аппаратный сбой и т.д.

Обработка исключительных ситуаций Конструкция try-catch try { охраняемый блок } catch(SomeExceptionClass e) {...}... catch(AnotherExceptionClass e) {...} Конструкция try-catch-finally try { byte [] buffer = new byte[128]; FileInputStream fis = new FileInputStream("file.txt"); while(fis.read(buffer) > 0) {... обработка данных... } } catch(IOException es) {... обработка исключения... } finally { fis.flush(); fis.close(); }

Оператор throw Программист сам может явно породить исключительную ситуацию... public int calculate(int theValue) throws Exception { I f( theValue < 0) { throw new Exception("Параметр для вычисления не должен быть отрицательным"); }}... Можно передать информацию об исключительной ситуации в вызывающий код... try {... } catch(IOException ex) {... // Обработка исключительной ситуации... // Повторное возбуждение исключительной ситуации throw ex; }

Преимущества исключений Разделение кода и обработки ошибок Группирование ошибок по типам Раскрутка стека readFile { try { open the file; determine its size; allocate that much memory; read the file into memory; close the file; } catch (fileOpenFailed) { doSomething; } catch (sizeDeterminationFailed) { doSomething; } catch (memoryAllocationFailed) { doSomething; } catch (readFailed) { doSomething; } catch (fileCloseFailed) { doSomething; } method1 { try { call method2; } catch (exception) { doErrorProcessing; } method2 throws exception { call method3; } method3 throws exception { call readFile; }

Создание классов исключений public class UserException extends Exception { public UserException() { super(); } public UserException(String descry) { super(descry); } Выбрасывание исключения: throw new UserException( "Дополнительное описание");

Выбрасывание исключений class ExceptThrow { public static void main(String[] args)throws MyException {int id = -1; if (id

Перехват исключений class ExceptThrow { public static void main(String[] args) { int id = -1; try{ if (id

Переопределение методов и исключений При переопределении метода список исключений можно только сужать public class BaseClass{ public void method () throws IOException {... } } public class LegalOne extends BaseClass { public void method () throws IOException {... } } public class LegalTwo extends BaseClass { public void method () {... } } public class LegalTree extends BaseClass { public void method () throws IOException, MalformedURLException {... } } Ошибка!!! public class IllegalOne extends BaseClass { public void method () throws IOException,IllegalAccessException {... } } public class IllegalTwo extends BaseClass { public void method () {... throw new Exception(); } } Метод создает исключения, которые являются подклассами исключения, возбуждаемого в старом методе Исключение не указано