Исключительные ситуации(Exceptions)- v0.2.ppt
- Количество слайдов: 15
Исключительные ситуации (Exceptions) © Net. Cracker Confidential 2008
Содержание u Введение u Иерархия u Причины возникновения ошибок u Обработка исключительных ситуаций u Проверяемые и непроверяемые исключения u Создание пользовательских классов исключений u Переопределение методов и исключения © Net. Cracker Confidential 2008 2
Введение Классические языки Java . . . int status. Code = some. Action(); if (status. Code){. . . обработка ошибки } else { status. Code = another. Action(); if(status. Code) {. . . обработка ошибки. . . } }. . . try{ some. Action(); another. Action(); } catch(Exception e) { // обработка исключительной ситуации } © Net. Cracker Confidential 2008 3
Причины возникновения ошибок u Попытка выполнить некорректное выражение. u. Выполнение оператора throw Этот оператор применяется для явного порождения ошибки. Асинхронные ошибки во время исполнения программы (например, Out. Of. Memory. Exception) u © Net. Cracker Confidential 2008 4
Обработка исключительных ситуаций Конструкция try-catch-finally: try {. . . } catch(Some. Exception. Class e) {. . . } catch(Another. Exception. Class e) {. . . } finally { … } © Net. Cracker Confidential 2008 5
Обработка исключительных ситуаций Конструкция try-catch-finally: try { byte [] buffer = new byte[128]; File. Input. Stream fis = new File. Input. Stream("file. txt"); while(fis. read(buffer) > 0) {. . . обработка данных. . . } } catch(IOException es) {. . . обработка исключения. . . } finally { fis. flush(); fis. close(); } © Net. Cracker Confidential 2008 6
Использование оператора throw public int calculate(int the. Value) throws Exception { if( the. Value < 0) { throw new Exception("Параметр для вычисления не должен быть отрицательным"); } } © Net. Cracker Confidential 2008 7
Использование оператора throw try {. . . } catch(IOException ex) { // Обработка исключительной ситуации // Повторное возбуждение исключительной // ситуации throw ex; } © Net. Cracker Confidential 2008 8
Использование оператора throw try {. . . throw new IOException(); . . . } catch(Exception e) {. . . } © Net. Cracker Confidential 2008 9
Проверяемые и непроверяемые исключения Null. Pointer. Exception, Class. Not. Found. Exception Clone. Not. Supported. Exception Array. Index. Out. Of. Bounds. Exception … … © Net. Cracker Confidential 2008 10
Иерархия © Net. Cracker Confidential 2008 11
Последовательность обработки исключений Неправильная конструкция Правильная конструкция try {. . . } catch(Exception e) {. . . } catch(IOException ioe) {. . . } catch(User. Exception ue) {. . . } try {. . . } catch(User. Exception ue) {. . . } catch(IOException ioe) {. . . } catch(Exception e) { … } © Net. Cracker Confidential 2008 12
Пользовательские классы исключений public class User. Exception extends Exception { public User. Exception() { super(); } public User. Exception(String description) { super(description); } } Использование: throw new User. Exception("Дополнительное описание"); © Net. Cracker Confidential 2008 13
Переопределение методов и исключения При переопределении методов следует помнить, что если переопределяемый метод объявляет список возможных исключений, то переопределяющий метод не может расширять этот список, но может его сужать. Метод базового класса Корректно Некорректно public void make. It() throws Some. Exception. Some. More. Exception © Net. Cracker Confidential 2008 14
Исключительные ситуации (Exceptions) Вопросы ? © Net. Cracker Confidential 2008 15