Как осознать ошибки в JAVA приложении - Александр Митин | TechMeetup #4 Java | JVM

В своем докладе "Как осознать ошибки" Александр поделился опытом /*отрицания*/ принятия ошибок и как сделать так, чтоб ошибки давали максимальную пользу вам и вашему проекту. Казалось бы, с обработкой ошибок в Java сталкиваются все, и вопрос очень прост - у нас есть try-catch и погнали. Но как грамотно и верно отправить сообщение так, чтобы оно принесло максимальную пользу? Здесь вопрос уже становится более глубоким - нужно понимать архитектуру приложения! Ведь нужно написать обработку ошибки таким образом, чтобы она помогала процессу, а не скрывала проблемы. episods (auto): 00:00 Введение • Александр Митин из компании T1. • Тема доклада: взаимодействие с ошибками. 00:21 О себе и проекте • Александр работает в T1 в кластере страхования. • Основная проблема: как правильно возвращать ответ в случае ошибки. • Система написана на Java 11, мигрирована на Java 17. 01:04 Архитектура системы • Система состоит из нескольких микросервисов и интеграций. • Три слоя: вью, сервисный, дао. • Используются различные библиотеки и стартеры. 01:58 Инструменты • Основной инструмент - класс Exception. • Иерархия исключений и наследование от Exception. • Обработка ошибок с помощью try-catch и Spring ExceptionHandler. 03:32 Первый этап • Первый этап: базовая реализация с Spring. • Формат ошибки: DTO класс с JSON. • Минусы: некорректное отображение сообщений на фронте. 05:53 Второй этап • Добавление поля message на русском языке. • Введение кода ошибки для лучшей диагностики. • Минусы: усложнение логики и появление блоков try-catch. 07:16 Третий этап • Переход к уникальному коду ошибки для идентификации места ошибки. • Создание собственного Exception для хранения кода ошибки. • Минусы: увеличение количества блоков try-catch и усложнение логики. 09:30 Рефакторинг • Цель рефакторинга: убрать блоки try-catch. • Использование аспектов Spring для обработки исключений. • Минусы: усложнение ExceptionHandler и необходимость ручного обертывания исключений. 12:01 Четвертый этап • Задумались о необходимости переделки системы. • Цель: определить место возникновения ошибки с большей точностью. 12:29 Переосмысление кода ошибок • Код ошибки должен стать динамическим, чтобы однозначно понимать, что происходит в системе. • В поле message должен быть русский текст, максимально информативный и не типовой. • В поле cause должны быть оригинальные сообщения об ошибке. 13:24 Добавление полей и типов ошибок • В поле detail должен быть ассоциативный массив с параметрами, такими как user ID. • Ошибки делятся на два типа: Java-ошибки и бизнес-ошибки. 14:14 Реализация типов ошибок • Пишем аннотации для типов ошибок и кодов. • Создаем исключение, которое хранит всю необходимую информацию. • Используем Spring Internationalization для работы с файлами свойств. 15:28 Аспект и работа с исключениями • Аспект обогащает исключение бизнес-информацией. • Ошибки проходят через слои системы, обогащаясь кодом ошибки. 16:46 Код контроля и бизнес-обработки • Фабрика переопределяет значения для исключений. • Бизнес-обработка использует аннотации для указания кода ошибки и дополнительной информации. 17:40 JSON и стек-трейсы • JSON содержит уникальный идентификатор ошибки, код ошибки, тип ошибки и дополнительную информацию. • Ошибки прозрачны и гибко настраиваются. 18:31 Преимущества и недостатки • Преимущества: интернационализация ошибок, понятный стек-трейсы. • Недостатки: работа только в контексте Spring, много времени на разработку. 19:43 Вопросы и ответы • Вопрос о том, почему фронт не может выдавать нормальные ошибки. • Вопрос о безопасности вывода Java-текста. • Вопрос о документировании кодов ошибок. 23:36 Философия и реализация • Использование исключений вместо return-резолва. • Реализация доступна в репозитории, но не публична. 24:07 Заключение • Следующая реализация не планируется. • Благодарность спикеру. #tech_meetup #java #tech_meetup4 --- Интересуешься следующими мероприятиями или есть вопросы? Добавляйся в нашу уютную общалку TechCommon/JAVA | JVM (https://t.me/tech_common) 👈

Иконка канала Дикая Симка
12 подписчиков
12+
3 просмотра
21 день назад
12+
3 просмотра
21 день назад

В своем докладе "Как осознать ошибки" Александр поделился опытом /*отрицания*/ принятия ошибок и как сделать так, чтоб ошибки давали максимальную пользу вам и вашему проекту. Казалось бы, с обработкой ошибок в Java сталкиваются все, и вопрос очень прост - у нас есть try-catch и погнали. Но как грамотно и верно отправить сообщение так, чтобы оно принесло максимальную пользу? Здесь вопрос уже становится более глубоким - нужно понимать архитектуру приложения! Ведь нужно написать обработку ошибки таким образом, чтобы она помогала процессу, а не скрывала проблемы. episods (auto): 00:00 Введение • Александр Митин из компании T1. • Тема доклада: взаимодействие с ошибками. 00:21 О себе и проекте • Александр работает в T1 в кластере страхования. • Основная проблема: как правильно возвращать ответ в случае ошибки. • Система написана на Java 11, мигрирована на Java 17. 01:04 Архитектура системы • Система состоит из нескольких микросервисов и интеграций. • Три слоя: вью, сервисный, дао. • Используются различные библиотеки и стартеры. 01:58 Инструменты • Основной инструмент - класс Exception. • Иерархия исключений и наследование от Exception. • Обработка ошибок с помощью try-catch и Spring ExceptionHandler. 03:32 Первый этап • Первый этап: базовая реализация с Spring. • Формат ошибки: DTO класс с JSON. • Минусы: некорректное отображение сообщений на фронте. 05:53 Второй этап • Добавление поля message на русском языке. • Введение кода ошибки для лучшей диагностики. • Минусы: усложнение логики и появление блоков try-catch. 07:16 Третий этап • Переход к уникальному коду ошибки для идентификации места ошибки. • Создание собственного Exception для хранения кода ошибки. • Минусы: увеличение количества блоков try-catch и усложнение логики. 09:30 Рефакторинг • Цель рефакторинга: убрать блоки try-catch. • Использование аспектов Spring для обработки исключений. • Минусы: усложнение ExceptionHandler и необходимость ручного обертывания исключений. 12:01 Четвертый этап • Задумались о необходимости переделки системы. • Цель: определить место возникновения ошибки с большей точностью. 12:29 Переосмысление кода ошибок • Код ошибки должен стать динамическим, чтобы однозначно понимать, что происходит в системе. • В поле message должен быть русский текст, максимально информативный и не типовой. • В поле cause должны быть оригинальные сообщения об ошибке. 13:24 Добавление полей и типов ошибок • В поле detail должен быть ассоциативный массив с параметрами, такими как user ID. • Ошибки делятся на два типа: Java-ошибки и бизнес-ошибки. 14:14 Реализация типов ошибок • Пишем аннотации для типов ошибок и кодов. • Создаем исключение, которое хранит всю необходимую информацию. • Используем Spring Internationalization для работы с файлами свойств. 15:28 Аспект и работа с исключениями • Аспект обогащает исключение бизнес-информацией. • Ошибки проходят через слои системы, обогащаясь кодом ошибки. 16:46 Код контроля и бизнес-обработки • Фабрика переопределяет значения для исключений. • Бизнес-обработка использует аннотации для указания кода ошибки и дополнительной информации. 17:40 JSON и стек-трейсы • JSON содержит уникальный идентификатор ошибки, код ошибки, тип ошибки и дополнительную информацию. • Ошибки прозрачны и гибко настраиваются. 18:31 Преимущества и недостатки • Преимущества: интернационализация ошибок, понятный стек-трейсы. • Недостатки: работа только в контексте Spring, много времени на разработку. 19:43 Вопросы и ответы • Вопрос о том, почему фронт не может выдавать нормальные ошибки. • Вопрос о безопасности вывода Java-текста. • Вопрос о документировании кодов ошибок. 23:36 Философия и реализация • Использование исключений вместо return-резолва. • Реализация доступна в репозитории, но не публична. 24:07 Заключение • Следующая реализация не планируется. • Благодарность спикеру. #tech_meetup #java #tech_meetup4 --- Интересуешься следующими мероприятиями или есть вопросы? Добавляйся в нашу уютную общалку TechCommon/JAVA | JVM (https://t.me/tech_common) 👈

, чтобы оставлять комментарии