Java. Exceptions - how to cook, how to eat.

53
Exceptions - how to cook, how to eat 1 Exceptions: how to cook, how to eat

description

lang: Russian

Transcript of Java. Exceptions - how to cook, how to eat.

Page 1: Java. Exceptions - how to cook, how to eat.

Exceptions -how to cook, how to eat

1Exceptions: how to cook, how to eat

Page 2: Java. Exceptions - how to cook, how to eat.

Общие понятия

• Во время выполнения программы могут возникать ситуации, когда:

• - состояние данных, • - устройств• - или компьютерной системы в целом

делает дальнейшие вычисления невозможными или бессмысленными.

2Exceptions: how to cook, how to eat

Page 3: Java. Exceptions - how to cook, how to eat.

Что делать?

• Как сообщить компьютерной системе, что в процессе ее работы произошел«глобальный трындец» ?

3Exceptions: how to cook, how to eat

Page 4: Java. Exceptions - how to cook, how to eat.

Немного теории

• Весь код пишется программистами(ну, почти весь код)

4Exceptions: how to cook, how to eat

Page 5: Java. Exceptions - how to cook, how to eat.

Немного теории

• Если программист попробует предусмотреть обработку всех проблем

5Exceptions: how to cook, how to eat

Page 6: Java. Exceptions - how to cook, how to eat.

Немного теории

• Если программист попробует предусмотреть обработку всех проблем,

то на 99.999% его код будет состоять из таких проверок

6Exceptions: how to cook, how to eat

Page 7: Java. Exceptions - how to cook, how to eat.

Немного теории

• Если программист «попробует» предусмотреть обработку всех проблем,

то на 99.999% его код будет состоять из таких проверок,

и могие из них, возможно, никогда и не понадобятся.

7Exceptions: how to cook, how to eat

Page 8: Java. Exceptions - how to cook, how to eat.

Немного теории

• Проверки будут лишним балластом.

8Exceptions: how to cook, how to eat

Page 9: Java. Exceptions - how to cook, how to eat.

Немного теории

• Проверки будут лишним балластом.На их написание будет потрачено время

9Exceptions: how to cook, how to eat

Page 10: Java. Exceptions - how to cook, how to eat.

Немного теории

• Проверки будут лишним балластом.На их написание будет потрачено время,на их тестирование будет потрачено еще больше времени.

10Exceptions: how to cook, how to eat

Page 11: Java. Exceptions - how to cook, how to eat.

Немного теории

• Проверки будут лишним баластом.На их написание будет потрачено время,на их тестирование будет потрачено еще больше времени,и нам не хватит времени на тестирование основной логики.

11Exceptions: how to cook, how to eat

Page 12: Java. Exceptions - how to cook, how to eat.

Немного теории

• Программист при написании кода чаще всего применяет оптимистический подход:

• Все будет хорошо

12Exceptions: how to cook, how to eat

Page 13: Java. Exceptions - how to cook, how to eat.

Немного примеров

• Нам надо сделать ОЧЕНЬ простую операцию

C = A + B

13Exceptions: how to cook, how to eat

Page 14: Java. Exceptions - how to cook, how to eat.

C = A + B

int sum(int a, int b) {return a+b;

}

• Это подход оптимиста

14Exceptions: how to cook, how to eat

Page 15: Java. Exceptions - how to cook, how to eat.

C = A + BДругой подход

int sum(int a, int b) { long c = a + b; if (c > Integer.MAX_INT) return ? ; // а что мне вернуть? if (c < Integer.MIN_INT) { return ? ; // а что мне вернуть?

return a+b;}

Все ли мы предусмотрели?

15Exceptions: how to cook, how to eat

Page 16: Java. Exceptions - how to cook, how to eat.

C = A + BА если у нас не хватит памяти?

int sum(int a, int b) { long c = a + b; if (c > Integer.MAX_INT) return ? ; // а что мне вернуть? if (c < Integer.MIN_INT) { return ? ; // а что мне вернуть?

return a+b;}

16Exceptions: how to cook, how to eat

Page 17: Java. Exceptions - how to cook, how to eat.

C = A + BА если ....?

Невозможно предусмотреть все «ЕСЛИ» которые могут случиться в программе.

17Exceptions: how to cook, how to eat

Page 18: Java. Exceptions - how to cook, how to eat.

Во всех компьютерных системах

• Во время выполнения программы БУДУТ возникать ситуации, когда:

• - состояние данных, • - устройств• - или компьютерной системы в целом

делает дальнейшие вычисленияневозможными или бессмысленными.

18Exceptions: how to cook, how to eat

Page 19: Java. Exceptions - how to cook, how to eat.

Exceptions - это ...

... реакция компьютерной системы на ошибку программиста?

19Exceptions: how to cook, how to eat

Page 20: Java. Exceptions - how to cook, how to eat.

Exceptions - это ...

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

20Exceptions: how to cook, how to eat

Page 21: Java. Exceptions - how to cook, how to eat.

Немного теории

• Разработчик пишет код так, как если бы в нём не случались ошибки.

21Exceptions: how to cook, how to eat

Page 22: Java. Exceptions - how to cook, how to eat.

Немного теории

• Разработчик пишет код так, как если бы в нём не случались ошибки.

• За обработку ошибок отвечает некоторый заранее определённый код, который знает, как обработать исключительную ситуацию.

22Exceptions: how to cook, how to eat

Page 23: Java. Exceptions - how to cook, how to eat.

Немного теории

• Метод обработки исключительных ситуаций может быть различный.

• Место обработки исключительных ситуаций может находиться на удалении от места ее возникновения.

23Exceptions: how to cook, how to eat

Page 24: Java. Exceptions - how to cook, how to eat.

Немного теории

• Реакция системы на исключительную ситуацию может быть различная

24Exceptions: how to cook, how to eat

Page 25: Java. Exceptions - how to cook, how to eat.

Немного теории

• Реакция системы на исключительную ситуацию может быть различная:

• от полного игнорирования и замалчивания

25Exceptions: how to cook, how to eat

Page 26: Java. Exceptions - how to cook, how to eat.

Немного теории

• Реакция системы на исключительную ситуацию может быть различная:

• от полного игнорирования и замалчивания• до полной остановки всей компьютерной

системы.

26Exceptions: how to cook, how to eat

Page 27: Java. Exceptions - how to cook, how to eat.

Немного теории

• Реакция системы на исключительную ситуацию может быть различная:

• от полного автоматического ремонта системы

27Exceptions: how to cook, how to eat

Page 28: Java. Exceptions - how to cook, how to eat.

Немного теории

• Реакция системы на исключительную ситуацию может быть различная:

• от полного автоматического ремонта системы

• до симптомов психозов, шизофрении и раздвоения личности

28Exceptions: how to cook, how to eat

Page 29: Java. Exceptions - how to cook, how to eat.

Немного теории

• Реакция системы на исключительную ситуацию может быть различная:

• от полного автоматического ремонта системы

• до симптомов психозов, щизофрении и раздвоения личности - как у программы, так и у команды тестирования.

29Exceptions: how to cook, how to eat

Page 30: Java. Exceptions - how to cook, how to eat.

Exceptions

• Виды и среда обитания

30Exceptions: how to cook, how to eat

Page 31: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.NullPointerException

31Exceptions: how to cook, how to eat

Page 32: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.NullPointerException

Когда и почему?Приложение пытается использовать обьект, который имеет значение null

32Exceptions: how to cook, how to eat

Page 33: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.NullPointerException

Причины возникновения:- программист не присвоил значение обьекту,- не инициализирована база данных,...

33Exceptions: how to cook, how to eat

Page 34: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.ClassCastException

34Exceptions: how to cook, how to eat

Page 35: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.ClassCastException

Когда и почему?Приложение пытается преобразовать объект к типу, которым он не может являться.

35Exceptions: how to cook, how to eat

Page 36: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.ClassCastException

Причины возникновения:ожидали одно, а кто-то подсунул другое...

36Exceptions: how to cook, how to eat

Page 37: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.ClassNotFoundException

37Exceptions: how to cook, how to eat

Page 38: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.ClassNotFoundException

Когда и почему?Приложение не нашло нужный ему класс

38Exceptions: how to cook, how to eat

Page 39: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.ClassNotFoundException

Причины возникновения:- неправильно собранное приложение,- ошибка в конфигурации,- не добавлена/не доступна библиотека,- библиотека не той версии,...

39Exceptions: how to cook, how to eat

Page 40: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.IndexOutOfBoundsException

40Exceptions: how to cook, how to eat

Page 41: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.IndexOutOfBoundsException

Когда и почему?Доступ к элементу массива по индексу большему, чем размер массива.

41Exceptions: how to cook, how to eat

Page 42: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.IndexOutOfBoundsException

Причины возникновения:...

42Exceptions: how to cook, how to eat

Page 43: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.StackOverflowError• java.lang.OutOfMemoryError

43Exceptions: how to cook, how to eat

Page 44: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.StackOverflowError• java.lang.OutOfMemoryError

Когда и почему?Все закончилось, больше нету

44Exceptions: how to cook, how to eat

Page 45: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.StackOverflowError • java.lang.OutOfMemoryError

Причины возникновения:бесконечная рекурсия или цикл...

45Exceptions: how to cook, how to eat

Page 46: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.RuntimeException

46Exceptions: how to cook, how to eat

Page 47: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.RuntimeException

Когда и почему? Что-то не так

47Exceptions: how to cook, how to eat

Page 48: Java. Exceptions - how to cook, how to eat.

Exceptions

• java.lang.RuntimeException

Причины возникновения:Различные...

48Exceptions: how to cook, how to eat

Page 49: Java. Exceptions - how to cook, how to eat.

Exceptions

• Application specific exception

49Exceptions: how to cook, how to eat

Page 50: Java. Exceptions - how to cook, how to eat.

Exceptions

• Application specific exception

Что это?my.application.infrastructure.ApplicationException

50Exceptions: how to cook, how to eat

Page 51: Java. Exceptions - how to cook, how to eat.

Exceptions

• Где их искать?

51Exceptions: how to cook, how to eat

Page 52: Java. Exceptions - how to cook, how to eat.

Exceptions

• Где их искать?– в результатах автоматического тестирования– глазами в работающем приложении

• Где еще?– Application console– Application logs– Tests env. logs

52Exceptions: how to cook, how to eat

Page 53: Java. Exceptions - how to cook, how to eat.

Exceptions -how to cook, how to eat

time to discuss

53Exceptions: how to cook, how to eat