Язык Java 
      
     
      
       
        
         
          
           Исключительные ситуации 
          
         
        
       
      
     
      
       Алексей Бованенко

      
       Понятие exception 
      
     
      
       
        
         Exception (исключительная ситуация) — событие, возникающее в ходе выполнения программы, которое нарушает нормальное выполнение инструкций 
        
       
       
        
         При возникновении ошибки создается объект, который передается системе выполнения. Данный объект является exception. 
        
       
       
        
         Создание объекта exception и передача его среде выполнения называется генерацией исключительной ситуации

      
       Обычный метод обработки ошибок 
      
     
      
       
        
         public class PreviousCaseClass {   public boolean method1(int i)   {   boolean res=false;   if(i>0)   res=true;   return res;    }   public boolean method2(int i)   {   boolean res=false;   if(method1(i))   res=true;   return res;   } public boolean method3(int i)   {   
        
       
      
     
      
       
        
         boolean res=false;   if(method2(i))   res=true;   return res;   }   public void test()   {   int i=-10;   if(method3(i))    System.out.println("Ошибок нет");   else   System.out.println("Неверные входные данные");   } }

      
       Обработка ошибок посредством exception 
      
     
      
       
        
         public class  NewCaseClass  { public void  method1 (int i) throws Exception   {   if(i>0)   throw new Exception("Неверные данные");   /*   * действия   */   }   public void  method2 (int i) throws Exception   {   method1(i);   }   
        
       
      
     
      
       
        
         public void  method3 (int i) throws Exception   {   method2(i);   }   public void  test()   {   int i=-10;   try{   method3(i);   }catch(Exception e)   {   System.out.println(e);   }   } }

      
       Обработка исключительных ситуаций 
      
     
      
       
        
         method1() генерирует исключение 
        
       
       
        
         Среда выполнения пытается найти обработчик среди методов в стэке вызовов (call stack)

      
       Поведение при возникновении исключительной ситуации 
      
     
      
       
        
         Перехват исключительной ситуации через блок try/catch 
        
       
       
        
         
          
           try{  mathod1(); }catch(Exception e){} 
          
         
        
       
       
        
         Передача исключительной ситуации на уровень выше 
        
       
       
        
         
          
           public void method2() throws Exception{}

      
       Типы исключительных ситуаций 
      
     
      
       
        
         Три типа: 
        
       
       
        
         
          
           Обрабатываемые исключительный ситуации 
          
         
        
       
       
        
         
          
           
            
             Правильно написанное программное обеспечение должно обрабатывать такого рода исключительные ситуации, восстанавливая выполнение программы 
            
           
          
         
        
       
       
        
         
          
           Ошибки (error)  
          
         
        
       
       
        
         
          
           
            
             Данные ошибки являются внешними по отношению к программе.  
            
           
          
         
        
       
       
        
         
          
           
            
             Программа не должна их обрабатывать 
            
           
          
         
        
       
       
        
         
          
           Исключительные ситуации времени исполнения (Runtime Exception) 
          
         
        
       
       
        
         
          
           
            
             Такого рода ошибки являются внутренними по отношению к прогармме 
            
           
          
         
        
       
       
        
         
          
           
            
             Программа не должна их обрабатывать

      
       Перехват и обработка исключительных ситуаций 
      
     
      
       
        
         Блок try 
        
       
       
        
         
          
           try{   /* Блок кода */ } catch и finally блоки 
          
         
        
       
       
        
         Блок catch 
        
       
       
        
         
          
           try{   /* Блок кода */ } catch(Exception1 e){} catch(Exception2 e){} 
          
         
        
       
       
        
         Блок finally 
        
       
       
        
         
          
           try{}catch(Exception e){}finally{}

      
       Генерация исключительных ситуаций 
      
     
      
       
        
         Базовый класс Throwable 
        
       
       
        
         
          
           Throwable() 
          
         
        
       
       
        
         
          
           Throwable(String message) 
          
         
        
       
       
        
         
          
           Throwable(String message, Throwable cause) 
          
         
        
       
       
        
         
          
           Throwable(Throwable cause) 
          
         
        
       
       
        
         
          
           public Throwable fillInStackTrace() 
          
         
        
       
       
        
         
          
           public Throwable getCause() 
          
         
        
       
       
        
         
          
           public String getMessage() 
          
         
        
       
       
        
         
          
           public StackTraceElement[] getStackTrace() 
          
         
        
       
       
        
         
          
           
            
             public String getFileName() 
            
           
          
         
        
       
       
        
         
          
           
            
             public int getLineNumber() 
            
           
          
         
        
       
       
        
         
          
           
            
             public String getClassName() 
            
           
          
         
        
       
       
        
         
          
           
            
             public String getMethodName() 
            
           
          
         
        
       
       
        
         
          
           
            
             public boolean isNativeMethod()

      
       Генерация исключительных ситуаций 
      
     
      
       
        
         Методы объекта Throwable: 
        
       
       
        
         
          
           public Throwable initCause(Throwable cause) 
          
         
        
       
       
        
         
          
           public void printStackTrace() 
          
         
        
       
       
        
         
          
           public void printStackTrace(PrintStream s) 
          
         
        
       
       
        
         
          
           public void printStackTrace(PrintWriter s) 
          
         
        
       
       
        
         Для генерации исключительной ситуации используется оператор throw 
        
       
       
        
         
          
           throw NewExceptionObject;

      
       
      
     
      
       Наследники класса Throwable 
      
     
      
       
        
         Класс Error — ошибки среды выполнения 
        
       
       
        
         Класс Exception — перехватываемые исключения. Не перехватываются только RuntimeException

      
       Построение цепочек  исключений 
      
     
      
       
        
         Для построения цепочек исключений используется конструктор Throwable с параметром Throwable, а также метод initCause 
        
       
       
        
         Для построения пользовательских классов исключений базовым классом является класс Exception 
        
       
       
        
         Цепочки строятся только для уточнения причин возникновения ошибок для последующей их обработки

      
       Конец 
      
     
      
       Вопросы 
       e-mail: a.bovanenko@gmail.com

Исключительные ситуации

  • 1.
    Язык Java Исключительные ситуации Алексей Бованенко
  • 2.
    Понятие exception Exception (исключительная ситуация) — событие, возникающее в ходе выполнения программы, которое нарушает нормальное выполнение инструкций При возникновении ошибки создается объект, который передается системе выполнения. Данный объект является exception. Создание объекта exception и передача его среде выполнения называется генерацией исключительной ситуации
  • 3.
    Обычный метод обработки ошибок public class PreviousCaseClass { public boolean method1(int i) { boolean res=false; if(i>0) res=true; return res; } public boolean method2(int i) { boolean res=false; if(method1(i)) res=true; return res; } public boolean method3(int i) { boolean res=false; if(method2(i)) res=true; return res; } public void test() { int i=-10; if(method3(i)) System.out.println("Ошибок нет"); else System.out.println("Неверные входные данные"); } }
  • 4.
    Обработка ошибок посредством exception public class NewCaseClass { public void method1 (int i) throws Exception { if(i>0) throw new Exception("Неверные данные"); /* * действия */ } public void method2 (int i) throws Exception { method1(i); } public void method3 (int i) throws Exception { method2(i); } public void test() { int i=-10; try{ method3(i); }catch(Exception e) { System.out.println(e); } } }
  • 5.
    Обработка исключительных ситуаций method1() генерирует исключение Среда выполнения пытается найти обработчик среди методов в стэке вызовов (call stack)
  • 6.
    Поведение при возникновении исключительной ситуации Перехват исключительной ситуации через блок try/catch try{ mathod1(); }catch(Exception e){} Передача исключительной ситуации на уровень выше public void method2() throws Exception{}
  • 7.
    Типы исключительных ситуаций Три типа: Обрабатываемые исключительный ситуации Правильно написанное программное обеспечение должно обрабатывать такого рода исключительные ситуации, восстанавливая выполнение программы Ошибки (error) Данные ошибки являются внешними по отношению к программе. Программа не должна их обрабатывать Исключительные ситуации времени исполнения (Runtime Exception) Такого рода ошибки являются внутренними по отношению к прогармме Программа не должна их обрабатывать
  • 8.
    Перехват и обработка исключительных ситуаций Блок try try{ /* Блок кода */ } catch и finally блоки Блок catch try{ /* Блок кода */ } catch(Exception1 e){} catch(Exception2 e){} Блок finally try{}catch(Exception e){}finally{}
  • 9.
    Генерация исключительных ситуаций Базовый класс Throwable Throwable() Throwable(String message) Throwable(String message, Throwable cause) Throwable(Throwable cause) public Throwable fillInStackTrace() public Throwable getCause() public String getMessage() public StackTraceElement[] getStackTrace() public String getFileName() public int getLineNumber() public String getClassName() public String getMethodName() public boolean isNativeMethod()
  • 10.
    Генерация исключительных ситуаций Методы объекта Throwable: public Throwable initCause(Throwable cause) public void printStackTrace() public void printStackTrace(PrintStream s) public void printStackTrace(PrintWriter s) Для генерации исключительной ситуации используется оператор throw throw NewExceptionObject;
  • 11.
    Наследники класса Throwable Класс Error — ошибки среды выполнения Класс Exception — перехватываемые исключения. Не перехватываются только RuntimeException
  • 12.
    Построение цепочек исключений Для построения цепочек исключений используется конструктор Throwable с параметром Throwable, а также метод initCause Для построения пользовательских классов исключений базовым классом является класс Exception Цепочки строятся только для уточнения причин возникновения ошибок для последующей их обработки
  • 13.
    Конец Вопросы e-mail: a.bovanenko@gmail.com