Исключения Java. Перехват исключений в Java.

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

 

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

Но что, если в программировании можно заранее предотвращать эти неприятные ситуации?! Да-да, можно! Для этого и было в введено понятие Исключений, Ошибок (от англ. - Exception).

Другими словами, в языке программирования Java описаны все возможные варианты исключений, которые может выкинуть Ваша программа! Так как Java - это объектно-ориентированный язык программирования, то каждый Exception это Класс. И эти Классы унаследуют друг друга, раcширяя их возможности и делая их более уникальными для каждого вида ошибок.

А расширяют они друг друга следующим образом:

 

Как и в жизни, есть ошибки(CHECKED), которые мы можем предотвратить и заранее приготовили для них решение. Например: если Вы едите в путешествие, скорее всего, Вы берете с собой аптечку, чтобы если кому-то станет плохо, у Вас было лекарство под рукой.

А бывают непредвиденные ошибки(UNCHECKED). Например: Вы поехали в жаркую страну и неожиданно циклон пригнал холода и начал падать снег летом.

Так и в языке программирования Java есть:

  • CHECKED Ошибки - те, для которых мы обязательно должны прописать какое-то решение, если что-то пойдет не так.
  • UNCHECKED Ошибки - те, которые мы не можем предвидеть заранее.

А на логичный вопрос: "А как заранее подготовить решение для ошибки?" Уже заготовлен заранее ответ. Вот так:

Блок try catch - помогает обработать определенный участок кода таким образом, что когда выскочит ошибка, она не приведет к завершению программы, а просто выполнит блок catch.

  • В блоке try Вы пишите код, который может в какой-то момент сработать не правильно и создать ошибку.
  • В блоке catch Вы ловите эту ошибку,  указав какой класс Ошибки будете ловить, после чего описываете как ее обработаете.

Давайте рассмотрим это на примере.

Например: если Вы захотите записать в файл текст, для этого можно использовать класс FileWriter. (Примечание: Если Вы не знакомы с FileWriter, прочитайте вот эту статью).

Как выглядит в среде разработки:

addtry

Другими словами, этот Класс подчеркивается красным и среда разрабтки предлагает записать тот же участок кода только в блоке try catch. Попробуем:

Например:

В таком случае ошибок не возникает и код отрабатывает успешно:

out

Так же в блоке catch можно обрабатывать ошибки абсолютно разным образом.

К примеру, если Вы сначала закроете файл, а после попробуете записать в него данные, выскочит Ошибка.

Например:

Вывод в консоль:

exceptionclose

В блоке catch, написано выводить ошибку в консоль. Было упомянуто, что выполняется любой код распаложеный в блоке catch. Давайте попробуем:

Например:

Вывод в консоль:

exceptionclose1

Выполнился только тот код, который написан в блоке catch. 

Даже при ошибке программа продолжает успешно работать!

Например:

Вывод в консоль:

exceptionclose3

Другими словами программа продолжит выполняться, даже когда выкинулась ошибка. А все потому, что Вы ее правильно обработали.

Но так же существует блок "finally", который будет выполняться всегда:

  • если была вызвана ошибка и выполнился блок catch
  • если все исполнилось без ошибок.

Например:

Вывод в консоль:

finallyvertex

И даже так!

Например:

Вывод в консоль:

finallyvertex2

В Checked Ошибках можно обойтись и без блока "try catch", подключив Класс ошибки напрямую к методу зарезервированным словом "throws":

Например:

Вывод в консоль:

throws1

В результате в момент когда выскочила ошибка, исполнение программы остановилось. Но таким образом можно избавиться от блоков "try catch". Если Вы точно уверенны, что код написан правильно.

В таком случае, если поменять местами закрытие и запись в файл - выйдет следующее:

Например:

Вывод в консоль:

throws2

В UNCHECKED Ошибках все гораздо проще. Так же можно использовать блок "try catch", если Вы явно видите, что может произойти ошибка.

Например:

Вывод в консоль:

unchecked1

Так как делить на ноль нельзя, в таком случае выскакивает ошибка Класса ArithmeticExceptionНо если Вы знаете заранее, что может такое произойти при выполнении программы, тогда конечно, чтобы не остановилось выполнение программы можно использовать блок "try catch".

Например:

Вывод в консоль:

unchecked2

 

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr
Самоучители--узнать детальнее--