Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Обработка исключений.

Slides:



Advertisements
Similar presentations
Clonazione La clonazione... Ovvero: come costruire una copia (probabilmente che ritorni true su equals?)
Advertisements

EXtreme Programming XP Тема 3. XP Пусть есть некоторая информационная система для банков. В качестве основной валюты для расчетов используется доллар,
Java Exception Very slightly modified from K.P. Chow University of Hong Kong (some slides from S.M. Yiu)
Exception Handling Yaodong Bi Exception Handling Java exception handling Try blocks Throwing and re-throwing an exception Catching an.
Exception Handling1. 2 Exceptions  Definition  Exception types  Exception Hierarchy  Catching exceptions  Throwing exceptions  Defining exceptions.
Understanding Java Exceptions. Outline What exceptions are for What exceptions are NOT for Catching & Throwing exceptions Exception Specifications Standard.
 2005 Pearson Education, Inc. All rights reserved Exception Handling.
Java Programming Exceptions. Java has a built in mechanism for error handling and trapping errors Usually this means dealing with abnormal events or code.
Java Exceptions. Types of exceptions  Checked exceptions: A checked exception is an exception that is typically a user error or a problem that cannot.
Objectives Understanding what an exception is Understanding the heirarchy of exception classes Learn the types of exception and how to catch and handle.
Скриптовые языки на примере Perl. Языки программирования Скриптовые Программа (или ее бай-код) интерпретируется Зачастую более высокий уровень абстрагирования.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Особенности Java. Блок static static { } Создание и уничтожение объектов  new – создание объекта  finalyze()
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
1 Nested Classes O. 2 Possible to declare a class within another class; called nested classes Nested class should have some specific association with.
Java Programming Transparency No. 1-1 Java Exception Handling Cheng-Chia Chen.
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Алгоритмические средства Java.
Анатомия класса. Схожесть с др. языками   С# похож на язык Java в том, что он требует, чтобы вся программная логика была заключена в определения типов.
1 From Yesterday private = accessible only to the class that declares it public = accessible to any class at all protected = accessible to the class and.
Java Computer Industry Lab. 1 Programming Java Exception Handling Incheon Paik.
交通大學資訊工程學系 Programming in Java Exception Handling 蔡文能 交通大學資訊工程學系
Контейнеры. Сортировка  Метод sort()  Интерфейс Comparable метод int compareTo(Object o) вызов: Arrays.sort(a)  Интерфейс Comparator метод int compare(Object.
Синтаксис языка Java.
Язык Java. JSP..
Пользовательские действия (custom actions) в JSP. JSTL.
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Стандартная библиотека Java: java.util, java.io, java.net.
Java Programming Transparency No. 1-1 Lecture 3.3. Java Exception Handling Cheng-Chia Chen.
Обработка исключений Гудов А.М., Завозкин С.Ю
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Пакет java.lang, синтаксический «сахар», родовые компоненты.
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Средства ООП Java.
1 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Java 2 Micro Edition Лаборатория информационных технологий (ИТЛаб) При поддержке фирмы.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
1 Identifiers  Identifiers are the words a programmer uses in a program  An identifier can be made up of letters, digits, the underscore character (
Chapter 13 Exception Handling F Claiming Exceptions F Throwing Exceptions F Catching Exceptions F Rethrowing Exceptions  The finally Clause F Cautions.
Exception: Java Error Handling Yingcai Xiao. Error Handling In-line if(error) System.out.println(“Error occurred here.”); Block-based if(error) { ErrorCode.
Program Errors Syntax errors Logic errors
EXCEPTION HANDLING.
Exception Handling in Java Exception Handling Introduction: After completing this chapter, you will be able to comprehend the nature and kinds.
Object Oriented Programming with Java (150704).  Throwable Exception (This class will catch exceptions generated by prog.) (Create your own custom exception.
Lecture objectives  Differences between Java and C#  Understand and use abstract classes  Casting in Java: why is it important?  Master exceptions.
JSP Exception Handling 20-Oct-15. JSP - E XCEPTION H ANDLING When you are writing JSP code, a programmer may leave a coding errors which can occur at.
Exception Handling in JAVA. Introduction Exception is an abnormal condition that arises when executing a program. In the languages that do not support.
1 Exception handling in Java Reading for this lecture: Weiss, Section 2.5 (exception handling), p. 47. ProgramLive, chapter 10. I need to know whether.
Subsystems: Improved exception handling for Java (DRAFT) Bart Jacobs, Frank Piessens.
Exceptions in Java. What is an exception? An exception is an error condition that changes the normal flow of control in a program Exceptions in Java separates.
1 1. Normal and exceptional control flow 2. Java exception types 3. Exception handling syntax 4. Inheritance.
Anekdot ANDROID CLUB Сегодня  Navigation Drawer  CardView  Calligraphy  TextToSpeech.
1 Exceptions. 2 Syntax Errors, Runtime Errors, and Logic Errors syntax errors, runtime errors, and logic errors You learned that there are three categories.
Стеки и очереди 1. Абстрактный стек public interface Stack { static class Underflow extends Exception { public Underflow() { super("Stack underflow");
Java Programming: Exceptions1 Exceptions Reference: java.sun.com/docs/books/tutorial/essential/exceptions/
Exception and Exception Handling. Exception An abnormal event that is likely to happen during program is execution Computer could run out of memory Calling.
Throw, Throws & Try-Catch Statements Explanations and Pictures from: Reference:
© 2001 by Ashby M. Woolf Revision 2 Exceptions for Exceptional Circumstances Passing a Problem up the Chain of Command.
Exception Handling. You learned that there are three categories of errors: syntax errors, runtime errors, and logic errors. Syntax errors arise because.
Exceptions The Need for Exceptions Throwing Exceptions
CS Week 10 Jim Williams, PhD.
Exceptions "A slipping gear could let your M203 grenade launcher fire when you least expect it. That would make you quite unpopular in what's left of your.
Handling Exceptions.
Класс Object Макаревич Л. Г..
null, true, and false are also reserved.
Introduction to Java Programming
EXCEPTION HANDLING OR ERROR HANDLING.
Exception Handling in Java
OBJECT ORIENTED PROGRAMMING
Sampath Kumar S Assistant Professor, SECE
JavaScript Reserved Words
Lecture 25: Inheritance and Polymorphism
E x c e p t i o n s Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. — Martin Golding.
Exception Objects An exception is an abnormal condition that arises in a code sequence at rum time. Exception is a way of signaling serious problem.
Presentation transcript:

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Обработка исключений

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 2 Ключевые слова – статус Ключевые слова, которые уже известны на текущий момент: abstractdefaultifprivatethis boolean doimplementsprotectedthrow breakdouble importpublicthrows byteelseinstanceofreturntransient caseextendsintshort try catchfinalinterfacestaticvoid char finally longstrictfpvolatile class float native super while const for new switch continue goto package synchronized

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 3 Класс java.lang.Object protected Object clone() используется для клонирования объектов. Для обеспечения клонирования класс должен перегрузить данный метод сделав его public и реализовав интерфейс Cloneable Class getClass() Возвращает объект типа Class содержащий информацию о классе объекта (о его методах, аттрибутах, пакете, правах доступа и т.д.) int hashCode() boolean equals() Возвращает значение hash функции от объекта. проверяет объекты на эквивалентность. Если вы перегружаете один из этих методов, то должны перегружать и другой. protected void finalize() Если вы перегрузили данный метод, то он будет вызван сборщиком мусора перед уничтожением объекта. wait(), notify(), notifyAll() Используются для синхронизации потоков при работе с объектами в многопоточном приложении String toString() Возвращает строковое представление объекта

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 4 Причины возникновения исключений  Ошибочная ситуация синхронно обработанная JVM во время вычисления выражения:  Выражение нарушает нормальную семантику языка (деление на ноль и т.д.)  Ошибка во время загрузки или связывания части программы  Нехватка ресурсов (недостаток памяти и др.) Эти исключения не вызываются в предопределенной точке программы.  Вызов оператора throw  Асинхронная ошибка, возникающая в следующих ситуациях:  вызов метода stop() класса Thread  внутренняя ошибка в виртуальной машине

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 5 Иерархия базовых исключений

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 6 Класс java.lang.Throwable  Базовый класс для всех классов исключений и ошибок, объект которого содержит информацию о стеке исполнения потока  Конструкторы: Throwable() Создает новый объект на основе информации о стеке текущего потока Throwable(String message) Создает новый объект на основе информации о стеке текущего потока плюс позволяет задать текст сообщения об ошибке Throwable(Throwable cause) Создает новый объект – обертку вокруг другого объекта Throwable. Стек вызовов заполняется на основе информации о стеке текущего потока Throwable(String message, Throwable cause) Создает объект-обертку с возможностью переопределения сообщения

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 7 Класс java.lang.Throwable (полезные методы) String getMessage() String getLocalizedMessage() Возвращает текст сообщения об ошибке printStackTrace() printStackTrace(PrintStream s) printStackTrace(PrintWriter s) Выводит информацию о стеке вызовов на момент возникновения ошибки. Распечатка ведется на стандартный поток ошибок или в указанный поток native Throwable fillInStackTrace() Заполняет информацию о стеке вызовов для текущего потока в объект Throwable и возвращает ссылку на этот-же объект. Используется конструкторами. initCause(Throwable cause) Throwable getCause() Манипуляция с объектом-источником (для оберток) StackTraceElement[ ] getStackTrace() setStackTrace(StackTraceElem ent[ ] stackTrace) Позволяет работать с элементами стека вызовов

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 8 Класс java.lang.StackTraceElement String getClassName() String getFileName() String getLineNumber() String getMethodName() Выдают информацию о точке вызова (исходный файл, строка в нем, имя класса, имя метода). Для того чтобы информация была доступна, код должен быть откомпилирован с включенной отладочной информацией int hashCode() boolean equals(Object obj) String toString() Перегруженные методы класса Object обеспечивающие сравнение двух объектов типа StackTraceElement, а также строковое представление boolean isNativeMethod() Возвращает true если вызван native метод

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 9 Error, Exception, RuntimeException  java.lang.Error – ошибки работы виртуальной машины java. Выбрасываются самой виртуальной машиной и сигнализируют о серьезных проблемах.  java.lang.Exception – базовый класс для исключений библиотеки и разрабатываемых приложений. Обычные исключения должны наследоваться от этого класса  java.lang.RuntimeException – специальный класс исключений, наследников которого не обязательно перехватывать с помощью try-catch и декларировать в throws списке метода. Используется для исключений, которые сигнализируют об ошибках при написании программы

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 10 Runtime исключения синхронно вызываемые JVM при нарушении семантики языка при вычислении выражений  OutOfMemoryError во время создания объекта (объекта – класса, массива, временного объекта при конкатенации строк)  NegativeArraySizeException во время создания объекта – массива.  NullPointerException во время использования (доступ к полю или вызов метода) ссылки или выражения результатом которого является ссылочный тип, имеющего значение null  NullPointerException при обращении к элементу массива в случае если ссылка на массив содержит null  ArrayIndexOutOfBoundsException в случае выхода за границы массива  ClassCastException при попытке приведения несовместимых типов.  Деление на ноль при выполнении операторов «/», «%» приводит к ArithmeticException  ArrayStoreException при попытке присваивания элементу массива значения несовместимого ссылочного типа.

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 11 Обработка исключений  Все исключения кроме наследников java.lang.Error и java.lang.RuntimeException должны явно обрабатываться одним из двух способов:  Выражение которое может привести к возникновению исключительной ситуации должно быть помещено в try – catch блок, который перехватит данное исключение  Метод содержащий выражение которое может привести к возникновению исключительной ситуации должен в объявлении throws содержать совместимый тип исключения (такой-же тип либо суперкласс данного исключения)  Исключение прерывает нормальную последовательность исполнения выражений и приводит к передачи управления вверх по стеку вызовов методов вплоть до точки перехвата исключения

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 12 try – catch – finally TryStatement: try Block Catches try Block Catches opt Finally Catches: CatchClause Catches CatchClause CatchClause: catch ( FormalParameter ) Block Finally: finally Block FormalParameter: final opt Type VariableDeclaratorId VariableDeclaratorId: Identifier VariableDeclaratorId [ ] try { … } catch (ChildException ce) { … } catch (ParentException pe) { … } catch (Exception ex) { … } catch (Throwable thr) { … } finally { … }

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 13 Обработка исключений try {... throw new Exception (“Description”);... } catch (Exception e) { System.err.println(“Exception caught:”+e); System.err.println(e.getMessage()); e.printStackTrace(); //На System.err e.printStackTrace(System.out);// PrintStream throw e; //Повторная генерация исключения } finally { //do something there System.out.println(“finally block”); }

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 14 Пример обработки исключений class Test { public void doIt() throws Exception{ throw new Exception("doIt"); } public void doAnother() throws Exception { doIt(); } public void letsDoIt() throws Exception { try { doAnother(); } catch (Exception e) { System.out.println("first printStackTrace:"); e.printStackTrace(System.out); System.out.println("local context in catch:"); Throwable t = new Throwable(); t.fillInStackTrace(); t.printStackTrace(System.out); System.out.println("Throw it again..."); throw e; } public class Main { public static void main(String[] args) { Test t = new Test(); try { t.letsDoIt(); } catch (Exception e) { System.out.println("Second printStackTrace:"); e.printStackTrace(System.out); }

Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 15 Блок finally – отрабатывает всегда: public class FinallyDemo { static void procA() { try { System.out.println("procA"); throw new RuntimeException("Demo"); } finally { System.out.println("finally procA"); } static void procB() { try { System.out.println("procB"); return; } finally { System.out.println("finally procB"); } static void procC() { try { System.out.println("procC"); } finally { System.out.println("finally procC"); } public static void main(String[] args) { try { procA(); } catch (Exception ex) { System.out.println("Exception was caught"); ex.printStackTrace(System.out); } procB(); procC(); }