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

825 views

Published on

lang: Russian

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
825
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Общее понятие исключительной ситуации Во время выполнения программы могут возникать ситуации, когда - состояние данных, - устройств ввода-вывода - или компьютерной системы в целом делает дальнейшие вычисления в соответствии с базовым алгоритмом невозможными или бессмысленными.
  • NullPointer ClastCast StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • NullPointer ClastCast IndexOutOfBounds StackOverflow / OutOfMemory JDBCException/IOException ---- Application Specific
  • Java. Exceptions - how to cook, how to eat.

    1. 1. Exceptions - how to cook , how to eat Exceptions: how to cook, how to eat
    2. 2. Общие понятия <ul><li>Во время выполнения программы могут возникать ситуации, когда: </li></ul><ul><li>- состояние данных, </li></ul><ul><li>- устройств </li></ul><ul><li>- или компьютерной системы в целом </li></ul><ul><li>делает дальнейшие вычисления невозможными или бессмысленными. </li></ul>Exceptions: how to cook, how to eat
    3. 3. Что делать? <ul><li>Как сообщить компьютерной системе, что в процессе ее работы произошел </li></ul><ul><li>« глобальный трындец » ? </li></ul>Exceptions: how to cook, how to eat
    4. 4. Немного теории <ul><li>Весь код пишется программистами (ну, почти весь код) </li></ul>Exceptions: how to cook, how to eat
    5. 5. Немного теории <ul><li>Если программист попробует предусмотреть обработку всех проблем </li></ul>Exceptions: how to cook, how to eat
    6. 6. Немного теории <ul><li>Если программист попробует предусмотреть обработку всех проблем, </li></ul><ul><li>то на 99.999% его код будет состоять из таких проверок </li></ul>Exceptions: how to cook, how to eat
    7. 7. Немного теории <ul><li>Если программист «попробует» предусмотреть обработку всех проблем, </li></ul><ul><li>то на 99.999% его код будет состоять из таких проверок, </li></ul><ul><li>и могие из них, возможно, никогда и не понадобятся. </li></ul>Exceptions: how to cook, how to eat
    8. 8. Немного теории <ul><li>Проверки будут лишним балластом. </li></ul>Exceptions: how to cook, how to eat
    9. 9. Немного теории <ul><li>Проверки будут лишним балластом. </li></ul><ul><li>На их написание будет потрачено время </li></ul>Exceptions: how to cook, how to eat
    10. 10. Немного теории <ul><li>Проверки будут лишним балластом. </li></ul><ul><li>На их написание будет потрачено время, </li></ul><ul><li>на их тестирование будет потрачено еще больше времени. </li></ul>Exceptions: how to cook, how to eat
    11. 11. Немного теории <ul><li>Проверки будут лишним баластом. </li></ul><ul><li>На их написание будет потрачено время, </li></ul><ul><li>на их тестирование будет потрачено еще больше времени, </li></ul><ul><li>и нам не хватит времени на тестирование основной логики. </li></ul>Exceptions: how to cook, how to eat
    12. 12. Немного теории <ul><li>Программист при написании кода чаще всего применяет оптимистический подход: </li></ul><ul><li>Все будет хорошо  </li></ul>Exceptions: how to cook, how to eat
    13. 13. Немного примеров <ul><li>Нам надо сделать ОЧЕНЬ простую операцию C = A + B </li></ul>Exceptions: how to cook, how to eat
    14. 14. C = A + B <ul><li>int sum(int a, int b) { </li></ul><ul><li>return a+b; </li></ul><ul><li>} </li></ul><ul><li>Это подход оптимиста  </li></ul>Exceptions: how to cook, how to eat
    15. 15. C = A + B Другой подход <ul><li>int sum(int a, int b) { </li></ul><ul><li>long c = a + b; </li></ul><ul><li>if (c > Inte g e r .MAX_INT) </li></ul><ul><li>return ? ; // а что мне вернуть? </li></ul><ul><li>if (c < Integer.MIN_INT) { </li></ul><ul><li>return ? ; // а что мне вернуть? </li></ul><ul><li>return a+b; </li></ul><ul><li>} </li></ul><ul><li>Все ли мы предусмотрели? </li></ul>Exceptions: how to cook, how to eat
    16. 16. C = A + B А если у нас не хватит памяти? <ul><li>int sum(int a, int b) { </li></ul><ul><li>long c = a + b; </li></ul><ul><li>if (c > Inte g e r .MAX_INT) </li></ul><ul><li>return ? ; // а что мне вернуть? </li></ul><ul><li>if (c < Integer.MIN_INT) { </li></ul><ul><li>return ? ; // а что мне вернуть? </li></ul><ul><li>return a+b; </li></ul><ul><li>} </li></ul>Exceptions: how to cook, how to eat
    17. 17. C = A + B А если ....? <ul><li>Невозможно предусмотреть все «ЕСЛИ» которые могут случиться в программе. </li></ul>Exceptions: how to cook, how to eat
    18. 18. Во всех компьютерных системах <ul><li>Во время выполнения программы БУДУТ возникать ситуации, когда: </li></ul><ul><li>- состояние данных, </li></ul><ul><li>- устройств </li></ul><ul><li>- или компьютерной системы в целом </li></ul><ul><li>делает дальнейшие вычисления </li></ul><ul><li>невозможными или бессмысленными. </li></ul>Exceptions: how to cook, how to eat
    19. 19. Exceptions - это ... <ul><li>... реакция компьютерной системы на ошибку программиста? </li></ul>Exceptions: how to cook, how to eat
    20. 20. Exceptions - это ... <ul><li>...реакция компьютерной системы на возникновение ситуации, которая делает дальнейшие вычисления невозможными или бессмысленными. </li></ul>Exceptions: how to cook, how to eat
    21. 21. Немного теории <ul><li>  Разработчик пишет код так, как если бы в нём не случались ошибки. </li></ul>Exceptions: how to cook, how to eat
    22. 22. Немного теории <ul><li>Разработчик пишет код так, как если бы в нём не случались ошибки. </li></ul><ul><li>За обработку ошибок отвечает некоторый заранее определённый код, который знает, как обработать исключительную ситуацию. </li></ul>Exceptions: how to cook, how to eat
    23. 23. Немного теории <ul><li>Метод обработки исключительных ситуаций может быть различный. </li></ul><ul><li>Место обработки исключительных ситуаций может находиться на удалении от места ее возникновения. </li></ul>Exceptions: how to cook, how to eat
    24. 24. Немного теории <ul><li>Реакция системы на исключительную ситуацию может быть различная </li></ul>Exceptions: how to cook, how to eat
    25. 25. Немного теории <ul><li>Реакция системы на исключительную ситуацию может быть различная: </li></ul><ul><li>от полного игнорирования и замалчивания </li></ul>Exceptions: how to cook, how to eat
    26. 26. Немного теории <ul><li>Реакция системы на исключительную ситуацию может быть различная: </li></ul><ul><li>от полного игнорирования и замалчивания </li></ul><ul><li>до полной остановки всей компьютерной системы. </li></ul>Exceptions: how to cook, how to eat
    27. 27. Немного теории <ul><li>Реакция системы на исключительную ситуацию может быть различная: </li></ul><ul><li>от полного автоматического ремонта системы </li></ul>Exceptions: how to cook, how to eat
    28. 28. Немного теории <ul><li>Реакция системы на исключительную ситуацию может быть различная: </li></ul><ul><li>от полного автоматического ремонта системы </li></ul><ul><li>до симптомов психозов , шизофрении и раздвоения личности </li></ul>Exceptions: how to cook, how to eat
    29. 29. Немного теории <ul><li>Реакция системы на исключительную ситуацию может быть различная: </li></ul><ul><li>от полного автоматического ремонта системы </li></ul><ul><li>до симптомов психозов , щизофрении и раздвоения личности - как у программы, так и у команды тестирования. </li></ul>Exceptions: how to cook, how to eat
    30. 30. Exceptions <ul><li>Виды и среда обитания </li></ul>Exceptions: how to cook, how to eat
    31. 31. Exceptions <ul><li>java.lang.NullPointerException </li></ul>Exceptions: how to cook, how to eat
    32. 32. Exceptions <ul><li>java.lang.NullPointerException </li></ul><ul><ul><li>Когда и почему? </li></ul></ul><ul><ul><li>Приложение пытается использовать обьект, который имеет значение null </li></ul></ul>Exceptions: how to cook, how to eat
    33. 33. Exceptions <ul><li>java.lang.NullPointerException </li></ul><ul><ul><li>Причины возникновения: </li></ul></ul><ul><ul><li>- программист не присвоил значение обьекту, </li></ul></ul><ul><ul><li>- не инициализирована база данных, </li></ul></ul><ul><ul><li>... </li></ul></ul>Exceptions: how to cook, how to eat
    34. 34. Exceptions <ul><li>java.lang.ClassCastException </li></ul>Exceptions: how to cook, how to eat
    35. 35. Exceptions <ul><li>java.lang.ClassCastException </li></ul><ul><ul><li>Когда и почему? </li></ul></ul><ul><ul><li>Приложение пытается преобразовать объект к типу, которым он не может являться. </li></ul></ul>Exceptions: how to cook, how to eat
    36. 36. Exceptions <ul><li>java.lang.ClassCastException </li></ul><ul><ul><li>Причины возникновения: </li></ul></ul><ul><ul><li>ожидали одно, а кто-то подсунул другое </li></ul></ul><ul><ul><li>... </li></ul></ul>Exceptions: how to cook, how to eat
    37. 37. Exceptions <ul><li>java.lang.ClassNotFoundException </li></ul>Exceptions: how to cook, how to eat
    38. 38. Exceptions <ul><li>java.lang.ClassNotFoundException </li></ul><ul><ul><li>Когда и почему? </li></ul></ul><ul><ul><li>Приложение не нашло нужный ему класс </li></ul></ul>Exceptions: how to cook, how to eat
    39. 39. Exceptions <ul><li>java.lang.ClassNotFoundException </li></ul><ul><ul><li>Причины возникновения: </li></ul></ul><ul><ul><li>- неправильно собранное приложение, </li></ul></ul><ul><ul><li>- ошибка в конфигурации, </li></ul></ul><ul><ul><li>- не добавлена/не доступна библиотека, </li></ul></ul><ul><ul><li>- библиотека не той версии, </li></ul></ul><ul><ul><li>... </li></ul></ul>Exceptions: how to cook, how to eat
    40. 40. Exceptions <ul><li>java.lang.IndexOutOfBoundsException </li></ul>Exceptions: how to cook, how to eat
    41. 41. Exceptions <ul><li>java.lang.IndexOutOfBoundsException </li></ul><ul><ul><li>Когда и почему? </li></ul></ul><ul><ul><li>Доступ к элементу массива по индексу большему, чем размер массива. </li></ul></ul>Exceptions: how to cook, how to eat
    42. 42. Exceptions <ul><li>java.lang.IndexOutOfBoundsException </li></ul><ul><ul><li>Причины возникновения: </li></ul></ul><ul><ul><li>... </li></ul></ul>Exceptions: how to cook, how to eat
    43. 43. Exceptions <ul><li>java.lang.StackOverflowError </li></ul><ul><li>java.lang.OutOfMemoryError </li></ul>Exceptions: how to cook, how to eat
    44. 44. Exceptions <ul><li>java.lang.StackOverflowError </li></ul><ul><li>java.lang.OutOfMemoryError </li></ul><ul><ul><li>Когда и почему? </li></ul></ul><ul><ul><li>Все закончилось, больше нету  </li></ul></ul>Exceptions: how to cook, how to eat
    45. 45. Exceptions <ul><li>java.lang.StackOverflowError </li></ul><ul><li>java.lang.OutOfMemoryError </li></ul><ul><ul><li>Причины возникновения: </li></ul></ul><ul><ul><li>бесконечная рекурсия или цикл </li></ul></ul><ul><ul><li>... </li></ul></ul>Exceptions: how to cook, how to eat
    46. 46. Exceptions <ul><li>java.lang.RuntimeException </li></ul>Exceptions: how to cook, how to eat
    47. 47. Exceptions <ul><li>java.lang.RuntimeException </li></ul><ul><li>Когда и почему? </li></ul><ul><ul><li> Что-то не так  </li></ul></ul>Exceptions: how to cook, how to eat
    48. 48. Exceptions <ul><li>java.lang.RuntimeException </li></ul><ul><ul><li>Причины возникновения: </li></ul></ul><ul><ul><li>Различные </li></ul></ul><ul><ul><li>... </li></ul></ul>Exceptions: how to cook, how to eat
    49. 49. Exceptions <ul><li>Application specific exception </li></ul>Exceptions: how to cook, how to eat
    50. 50. Exceptions <ul><li>Application specific exception </li></ul><ul><li>Что это? </li></ul><ul><ul><li>my.application. infrastructure.ApplicationException </li></ul></ul>Exceptions: how to cook, how to eat
    51. 51. Exceptions <ul><li>Где их искать? </li></ul>Exceptions: how to cook, how to eat
    52. 52. Exceptions <ul><li>Где их искать? </li></ul><ul><ul><li>в результатах автоматического тестирования </li></ul></ul><ul><ul><li>глазами  в работающем приложении </li></ul></ul><ul><li>Где еще? </li></ul><ul><ul><li>Application console </li></ul></ul><ul><ul><li>Application logs </li></ul></ul><ul><ul><li>Tests env. logs </li></ul></ul>Exceptions: how to cook, how to eat
    53. 53. Exceptions - how to cook , how to eat time to discuss Exceptions: how to cook, how to eat

    ×