Часть 1. Основы ООП. 1.3. Исключения.. Структурный подход Неисправимые ошибки – вывести информацию и умереть. Исправимые ошибки – уведомить вызывающую.

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



Advertisements
Похожие презентации
Saint Petersburg, 2011 Java Lecture #06 Exceptions.
Advertisements

1 Обработка исключений в Java Одно из важнейших преимуществ Java – разработанный на уровне языка механизм обработки исключений. Исключение в Java - это.
Кафедра ОСУ, Java 2004 Обработка исключений В Java обработка исключительных ситуаций (exception handling) происходит следующим образом: Либо.
Исключения в Java. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение выбрасывается (throw),
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Обработка исключительных ситуаций Андрей Дмитриев 2008.
Обработка исключительных ситуаций. Синтаксис try{ операторы0; } catch (ТипИсключения1 переменная1){ операторы1; } catch (ТипИсключения2 переменная2){
Java: интерфейсы, наследование, обработка исключительных ситуаций Вашенков Олег Евгеньевич.
Лекция 27. Введение в STL (часть 4) Красс Александр СПбГУ ИТМО, 2009.
Исключительные ситуации. Схема обработки исключений Try { //охраняемый блок trow (new MyException();) } catch(MyExeption e) { … } catch(Exeption e){ …
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Часть 1. Основы ООП Наследование и полиморфизм.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Обработка исключений.
Изучение динамического определения типов. Класс Class. Динамическая загрузка и инстанцирование классов. В Java вся информация о классе хранится в специальном.
Обработка исключений Основы метапрограммированияОбработка исключений Основы метапрограммирования.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Saint Petersburg, 2012 Java Lecture #04 Part I - IO.
С++, ООП Семинар 2 Рябова Анна Сергеевна
Транксрипт:

Часть 1. Основы ООП Исключения.

Структурный подход Неисправимые ошибки – вывести информацию и умереть. Исправимые ошибки – уведомить вызывающую функцию через возвращаемое значение. int open(const char * filename) Возвращает -1, если открыть файл не удалось.

Недостатки Легко забыть проверить код возврата. Код ужасен! if ( ( result = open ( 1.txt ) ) < 0 ) {... } if ( ( result = open ( 2.txt ) ) < 0 ) {... }

Недостатки Как обернуть ошибку? int LoadDataFromFiles () { if ( ( result = open ( 1.txt ) ) < 0 ) return 1;... } Описание ошибок, произошедших в функции LoadDataFromFiles, сложно вернуть выше.

Исключения Ошибка описывается объектом класса. if ( aName.length() == 0 ) throw new IllegalArgumentException ( Name cannot be empty). Сообщение об ошибке – выполнение инструкции throw с новым созданным объектом, описывающим ошибку, в качестве аргумента.

Типы исключений Класс исключения – наследник Error, Exception или RuntimeException. Обработчик сообщает, ошибки какого класса он умеет контролировать, и подходит также для наследующих классов. Throwable Error Нельзя контрол. Exception Runtime Exception Необяз. контрол. Обязат. контрол.

Обработчики исключений try { // readLine return new BufferedReader( new InputStreamReader( System.in)).readLine(); } catch (IOException e) { return new String(); // можно throw } Если исключение не обработано, можно повторить его throw. Иначе выполнение продолжится за блоком try-catch.

Обработчики исключений class FileReader implements Reader { // Код неполный! public byte read() {... if ( CannotReadFromFile ) throw new IOException(); if ( FileIsOver ) throw new EOFException();... }

Обработчики исключений Класс EOFException наследует от IOException. try {... } catch(IOException e ) {... } catch(EOFException e ) {... } Выбирается наиболее специфичный обработчик, но подходит обработчик для базового класса. Исключения из main обрабатываются так: System.out.println(e.printStackTrace());

Разматывание метода class FileWriter implements Writer { // Код неполный! public void writeByte(byte aByte) {... if ( CannotWriteToFile ) throw new IOException();... } Если метод writeByte не справился, будет сгенерировано исключение.

Разматывание метода class PlainEncodingAlgorithm... { // Код неполный! public void encode(Reader Source, Writer Destination) {... Destination.writeByte ( myBuffer );... } Метод encode не контролирует генерацию исключения методом writeByte.

Контроль за ошибками Контролируемые исключения обязательно декларировать. public void writeByte(byte aByte) throws IOException Если метод не обрабатывает контролируемое исключение, он также декларирует его. public void encode(Reader r, Writer w) throws IOException

Генерация исключения При генерации запоминается стек вызовов. System.out.println( e.printStackTrace()); При генерации может запоминаться исключение-причина ошибки. catch(HisException exc) { throw new MyException(exc); }

Блок finally Код внутри блока finally выполняется вне зависимости от того, случилось исключение или нет. try {... } finally {... }