Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Подружиться с исключениями. Иван Гришаев, Exoscale

Подружиться с исключениями. Иван Гришаев, Exoscale

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

Видео: https://youtu.be/ISANJ69EdvE

80eadbf0a221aaa4b764854df32fb781?s=128

Deep Refactoring

May 11, 2019
Tweet

Transcript

  1. Подружиться с исключениями Иван Гришаев, 2019

  2. None
  3. Getting Clojure, pp. 44, 45

  4. 1. Запрос 2. Авторизация 3. Права 4. Валидация 5. CRUD

    6. Ответ HTTP REST Service
  5. None
  6. Network Service

  7. Ошибки — это нормально

  8. None
  9. None
  10. None
  11. None
  12. None
  13. None
  14. Какой был пользователь? Какой был API ключ? Что было в

    теле?
  15. Кто накосячил?

  16. Нет данных

  17. None
  18. None
  19. Official AWS S3 SDK Java

  20. None
  21. 1. Сообщение 2. Контекст 3. Причина Re-throw pattern

  22. None
  23. None
  24. None
  25. None
  26. None
  27. Примеры

  28. Примеры

  29. Примеры

  30. Проблема сообщения

  31. Проблема сообщения 1. Перехватывать 2. Сообщение — пользователю 3. Контекст

    — в Sentry
  32. None
  33. None
  34. None
  35. https://github.com/exoscale/raven/

  36. None
  37. None
  38. This

  39. This IS

  40. This IS Data

  41. Порядок Статистика Ответственность База знаний Сразу

  42. Порядок Статистика Ответственность База знаний Сразу

  43. Порядок Статистика Ответственность База знаний Сразу

  44. Порядок Статистика Ответственность База знаний Сразу

  45. Порядок Статистика Ответственность База знаний Сразу

  46. — Monads maybe? — Maybe not ©.

  47. None
  48. None
  49. None
  50. None
  51. None
  52. None
  53. None
  54. None
  55. Организационные проблемы

  56. Исключения > try/catch Re-throw, chaining Точка сбора ошибок Не спешите

    с монадами
  57. Исключения > try/catch Re-throw, chaining Точка сбора ошибок Не спешите

    с монадами
  58. Исключения > try/catch Re-throw, chaining Точка сбора ошибок Не спешите

    с монадами
  59. Исключения > try/catch Re-throw, chaining Точка сбора ошибок Флоу-макросы >

    монады
  60. (всё!)