2013-04-15 5 views
3

Надеюсь, что есть четкий ответ на этот вопрос.Пользовательское исключение с дополнительными свойствами?

Предпочтительно ли распространять пользовательское исключение с дополнительными свойствами, такими как идентификатор элемента или что-то подобное, чтобы разрешить исключение с помощью принимающего клиента?

Альтернативой было бы иметь всю ценную информацию, скрытую в строке сообщения. Или заменить исключение на комплексное возвращаемое значение с фактическим результатом и дополнительной информацией контекста, которая в противном случае была бы в свойствах исключения.

Спасибо за ваш совет!

+0

Возможно, оба. Расширенные свойства хороши для синтаксического анализа исключения. Строковое представление с максимально возможной информацией может по-прежнему полезно для чтения человеком при попадании на внешний инструмент (например, тестирование), который не может получить информацию из пользовательских свойств. – Glutexo

ответ

0

Это действительно зависит от сценария. Обычно, если это фактическое исключение (что останавливает выполняемый метод), я бы использовал первый вариант расширения класса исключений.

Строковый вариант звучит плохо, независимо от сценария.

Сложный возвращаемый объект звучит хорошо для меня, когда мы говорим о таких вещах, как ответы (например, HttpResponse), где у вас есть разные уровни проблем, которые могут произойти (исключение выбрано из-за отсутствия связи? Возможно, ошибка учетных данных? фактическое логическое исключение на стороне сервера?).

+0

Спасибо за ваш ответ! Любые другие мысли? –