Как спроектировать обработку исключений? Всем привет! Сейчас проектирую свой фреймворк. Раньше писал на yii2. Решил внедрить обработку исключений в ядро фреймворка. Прочитал эту https://habrahabr.ru/post/30399/ и еще несколько статей об обработке исключений. На практике начал писать классы исключений и бросать их в коде. Между тем при установке xdebug, уже можно увидеть красивый стек вызовов в табличке вместе с ошибкой, пути к файлу и строчки где возникла ошибка. Когда же я начинаю бросать кастомные исключения, то мало того, что мне необходимо писать писать блок catch для его обработки (а иначе выбрасывается еще и ошибка о не пойманном исключении - Uncaught exception), так еще и красивая табличка со стеком пропадает и ее приходится создавать самому (изобретая велосипед). Какой вывод сделал я: если бросаю где-то исключение (Exception или какое-то свое), то под него я обязан написать блок catch, и изобрести красивый вывод стека заново, соответственно если у меня будет 20 моих кастомных исключений, я должен буду написать 20 блоков catch (если моя цель - это вывод уникального сообщения об ошибки и стека функций, то это не рационально). Причем, если не бросать исключение, то ошибку мне все равно выдаст, в красивой рамочке. У меня сложилось такое впечатление, что обработка исключений выгодна лишь тогда, когда действительно необходимо написать какой-то обработчик (а не просто выводить сообщение об ошибке и стек). В чем же тогда выгода использования исключений во фреймворке, какие Ваши мысли? Прошу не придераться к словам и указать на ошибки в моих рассуждениях, если они есть, спасибо.
Ваше рассуждение имеет смысл, и в нем действительно есть зерно правды. Обработка исключений действительно полезна в случаях, когда требуется специфическая обработка ошибок или необходимо выполнить определенные действия при возникновении определенной ситуации.
Однако, использование исключений во фреймворке также может иметь и другие плюсы. Например, использование исключений может упростить код и сделать его более читаемым, так как при возникновении ошибки не нужно писать длинные условия для проверки наличия ошибок.
Кроме того, использование исключений позволяет выполнять комплексные операции в обработчиках исключений, например, фиксацию ошибки в логах или отправку уведомлений разработчикам.
Если вы бросаете много собственных исключений и каждое из них требует собственной обработки, возможно, стоит задуматься о рефакторинге вашего кода. Возможно, некоторые исключения можно объединить или обработать общим обработчиком исключений.
Итак, обработка исключений может иметь свои плюсы и минусы, и решение о ее использовании в вашем фреймворке зависит от конкретных задач, которые вы перед собой ставите.
Ваше рассуждение имеет смысл, и в нем действительно есть зерно правды. Обработка исключений действительно полезна в случаях, когда требуется специфическая обработка ошибок или необходимо выполнить определенные действия при возникновении определенной ситуации.
Однако, использование исключений во фреймворке также может иметь и другие плюсы. Например, использование исключений может упростить код и сделать его более читаемым, так как при возникновении ошибки не нужно писать длинные условия для проверки наличия ошибок.
Кроме того, использование исключений позволяет выполнять комплексные операции в обработчиках исключений, например, фиксацию ошибки в логах или отправку уведомлений разработчикам.
Если вы бросаете много собственных исключений и каждое из них требует собственной обработки, возможно, стоит задуматься о рефакторинге вашего кода. Возможно, некоторые исключения можно объединить или обработать общим обработчиком исключений.
Итак, обработка исключений может иметь свои плюсы и минусы, и решение о ее использовании в вашем фреймворке зависит от конкретных задач, которые вы перед собой ставите.