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

Исключение - это событие, которое происходит во время выполнения программы, что нарушает нормальный поток инструкций программы. Он обеспечивает способ передачи контроля с одной части программы на другую. Исключения происходят в таких ситуациях, как ваша программа заканчивается из памяти, файл не существует в указанном пути, сетевые соединения удаляются и т. Д. Более конкретно, для лучшего понимания мы можем сказать, что это ошибка Runtime во время выполнения программы, которая нарушает нормальный поток инструкций. На следующем рисунке показано исключение outofmemory:

Класс исключений используется для исключительных условий, которые должны выполнять программы. Возможные исключения в программе Java организованы в иерархию классов исключений. Класс Throwable, который является непосредственным подклассом Object, находится в корне иерархии исключений. Throwable имеет два непосредственных подкласса: Exception и Error. Существует важный подкласс Exception, известный как RuntimeException.

  1. try
  2. catch
  3. наконец
  4. throw
  5. throws

Синтаксис:

 
try{
  //, которые могут вызывать исключение
}catch(ExceptionClass ex){}

Чтобы перехватить исключения, часть кода помещается под проверку исключений. Это делается путем включения этой части кода в блок try {}. Когда в этом блоке возникает исключительное обстоятельство, генерируется исключение, которое передает управление обработчику исключений. Если исключение не выбрасывается, код продолжается нормально, и все обработчики игнорируются.

Пример без исключения catch:

 
class TestClass
{
  public static void main (String[] args)
  {
    int value=10/0;// целое число «деление на ноль» исключает исключение
    System.out.println("next line...");
  }
}

Вывод:

 
Exception in thread "main" Java.lang.ArithmeticException: / by zero
	at TestClass.main(Main.Java:5)

Когда вы запускаете вышеуказанный код, компилятор бросает Java.lang.ArithmeticException и весь код после исключения не будет выполнен. В таких ситуациях мы должны использовать обработку исключений.

 
class TestClass
{
  public static void main (String[] args)
  {
    try{
      int value=10/0;// целое число «деление на ноль» исключает исключение
    }catch(ArithmeticException ea){
    System.out.println(ea);
    // вы можете обрабатывать исключение в этом блоке
      System.out.println("Exception Handle here !!");
    }
    System.out.println("next line...");
  }
}

Вывод:

 
Java.lang.ArithmeticException: / by zero
Exception Handle here !!
next line...

Здесь вы можете увидеть исключение, обрабатываемое в блоке catch, и программа продолжит следующую строку. Важно отметить, что за блоком Java try должен следовать либо catch, либо finally block.

try..catch в Java

Оператор finally должен быть связан с инструкцией try..catch. Он идентифицирует блок операторов, который должен выполняться независимо от того, происходит ли исключение в блоке try. Не обязательно включать окончательный блок вообще, но если вы это сделаете, он будет работать независимо от того, было ли исключено и обработано исключение, и попытайтесь уловить части блока. В нормальном случае исполнение блока finally выполняется после блока try. Когда происходит какое-либо исключение, сначала выполняется блок catch, а затем выполняется окончательный блок.

Синтаксис:

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

Пример с исключением:

 
class TestClass
{
  public static void main (String[] args)
  {
    try{
      int value=10/0;// целое число «деление на ноль» исключает исключение
      System.out.println("Result is: " + value);
    }catch(ArithmeticException ea){
      System.out.println(ea);
    }
    finally{
      System.out.println("Finally should execute !!");
    }
  }
}

Вывод:

 
Java.lang.ArithmeticException: / by zero
Finally should execute !!

Здесь исключение произошло, но блок кода finally был выполнен.

Пример с исключением:

 
class TestClass
{
  public static void main (String[] args)
  {
    try{
    int value=10/2;
      System.out.println("Result is: " + value);
    }catch(ArithmeticException ea){
      System.out.println(ea);
    }
    finally{
      System.out.println("Finally should execute !!");
    }
  }
}

Вывод:

 
Result is: 5
Finally should execute !!

Здесь мы видим, что программа выполняется без каких-либо исключений, но после этого блок finally также выполняется.

Как выхватить несколько исключений

Метод может вызывать несколько исключений. Однако этот метод должен объявить все проверенные исключения, которые он может

 
try {
  // Выполняем некоторую обработку, которая выдает исключения
} catch (SQLException e) {
  someCode();
} catch (IOException e) {
  someCode();
} catch (Exception e) {
  someCode();
}

С выпуском Java 7 оракул также внес некоторые хорошие изменения в механизм обработки исключений. Прежде всего, это улучшенный блок catch block and redundant throws.

 
try {
    // Выполняем некоторую обработку, которая выдает исключения
} catch(SQLException  IOException e) {
    someCode();
} catch(Exception e) {
    someCode();
}

В этой функции теперь вы можете поймать несколько исключений в одном блоке catch. Перед Java 7 вы были ограничены, чтобы поймать только одну.

Проверенные и непроверенные исключения

Проверенные исключения являются подклассами Java.lang.Exception и Unchecked Exceptions являются подклассами Java.lang.RuntimeException.

Проверено исключение

Неконтролируемое исключение

Классы, которые расширяют исключение RuntimeException, называются неконтролируемыми исключениями. Исключенные исключения - это чисто программные ошибки, такие как логические ошибки или неправильное использование API, нулевые данные или даже сбои в бизнес-логике могут привести к исключениям во время выполнения. Исключения во время выполнения игнорируются во время компиляции, например. ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException и т. Д. Это абсолютно нормально обрабатывать / исключать исключенные исключения из кода. В C ++ все исключения не отмечены, поэтому компилятор не вынужден обрабатывать или указывать исключение. Программисты должны быть цивилизованными и определять или улавливать исключения

Преимущества обработки исключений

Java обеспечивает сложный механизм обработки исключений, который позволяет идентифицировать исключительные условия в коде и фиксировать исключения по мере их возникновения. Вот некоторые из важных преимуществ:

Java обеспечивает сложный механизм обработки исключений, который позволяет идентифицировать исключительные условия в коде и фиксировать исключения по мере их возникновения. Вот некоторые из важных преимуществ:...

  1. Обработка исключений позволяет нам контролировать нормальный поток программы, используя обработку исключений в программе.
  2. Возможность распространения ошибок на стек вызовов Еще одним важным преимуществом обработки исключений в объектно-ориентированном программировании является способность распространять ошибки в стеке вызовов.
  3. Он выдает исключение всякий раз, когда вызывающий метод обнаруживает ошибку, при условии, что вызывающий метод позаботится об этом error.
  4. Он также дает нам возможность организовать и дифференцировать различные типы ошибок с использованием отдельного блока кодов. Это делается с помощью блоков try-catch.

Источник: http://net-informations.com/Java/sts/exceptions.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector