Similar presentations:
Обработка исключений Sapsan-Code
1.
Обработка исключенийSapsan-Code
2.
Обработка исключенийНередко в процессе выполнения программы могут
возникать ошибки, при том необязательно по вине
разработчика. Некоторые из них трудно предусмотреть
или предвидеть, а иногда и вовсе невозможно. Так,
например, может неожиданно оборваться сетевое
подключение при передаче файла. Подобные ситуации
называются исключениями.
В языке Java предусмотрены специальные средства
для обработки подобных ситуаций. Одним из таких
средств является конструкция try...catch...finally. При
возникновении исключения в блоке try управление
переходит в блок catch, который может обработать
данное исключение. Если такого блока не найдено, то
пользователю отображается сообщение о
необработанном исключении, а дальнейшее
выполнение программы останавливается. И чтобы
подобной остановки не произошло, и надо использовать
3.
Пример кодаpublic static void main(String[]
args) {
String[] teachers = new
String[3];
teachers[4] = "Arnur";
System.out.println(teachers[4]);
}
4.
Пример кодаpublic static void main(String[]
args) {
try {
String[] teachers = new
String[3];
teachers[4] = "Arnur";
System.out.println(teachers[4]);
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("Программа
Sapsan-code изменена");
}
5.
Полезные факты!Выражение catch имеет следующий синтаксис:
catch (тип_исключения имя_переменной). В
данном случае объявляется переменная e,
которая имеет тип Exception. Но если
возникшее исключение не является
исключением типа, указанного в инструкции
сatch, то оно не обрабатывается, а программа
просто зависает или выбрасывает сообщение
об ошибке.
6.
FinallyПосле завершения выполнения блока catch
программа продолжает свою работу, выполняя
все остальные инструкции после блока catch.
Конструкция try..catch также может иметь блок
finally. Однако этот блок необязательный, и его
можно при обработке исключений опускать.
Блок finally выполняется в любом случае,
возникло ли исключение в блоке try или нет
public static void main(String[] args) {
try {
String[] teachers = new String[3];
teachers[4] = "Arnur";
System.out.println(teachers[4]);
}
catch (Exception e) {
e.printStackTrace();
System.out.println("Упс, вы словили ошибку");
}
finally {
System.out.println("Вы дошли до конца программы");
}
System.out.println("Программа Sapsan-code
изменена");
}
7.
Обработка нескольких исключенийpublic static void main(String[] args) {
try {
String[] teachers = new String[3];
teachers[4] = "Arnur";
System.out.println(teachers[4]);
}
catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
System.out.println("Упс, вы словили ошибку");
}
catch (Exception e) {
e.printStackTrace();
System.out.println("Простая ошибка");
}
finally {
System.out.println("Вы дошли до конца программы");
}
System.out.println("Программа Sapsan-code
изменена");
}
8.
Оператор ThrowЧтобы сообщить о выполнении
исключительных ситуаций в
программе, можно использовать
оператор throw. То есть с помощью
этого оператора мы сами можем
создать исключение и вызвать его в
процессе выполнения.
public static void main(String[] args) {
try {
for(int i =0; i<10; i++) {
if(i == 9) {
throw new Exception("Число стало равно 9");
}
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
System.out.println("Программа завершена");
}
}
9.
Оператор throwsИногда метод, в котором может
генерироваться исключение, сам не
обрабатывает это исключение. В
этом случае в объявлении метода
используется оператор throws,
который надо обработать при
вызове этого метода.
public static void main(String[] args) {
try {
System.out.println(multiplyByTwo(5));
}
catch (Exception e) {
e.printStackTrace();
}
finally {
System.out.println("Программа завершилась");
}
}
public static int multiplyByTwo(int number ) throws
Exception {
if (number * 2 == 10) throw new Exception("Число стало
равно 10");
return number *2;
}
10.
Exception Hierarchy11.
Homework1. Написать 5 простых функции где будут обрабатываться
простые ошибки, по типу: IndexOutOfBound,
StackOverflow.
2. Выучить иерархию ошибок
3. Прочитать про базы данных и postgresql.