Прежде всего, я представляю вам контекст. Я пишу api в C# и ASP. NET Core, и я пытаюсь следовать чистой архитектуре.
В итоге: я не знаю, где разместить свои исключения. Я написал небольшой сценарий, в котором я объясняю свой лог c.
- Предположим, что я выбрасываю DuplicatePersonException в конкретный шлюз.
- Это исключение будет перехвачено моим вариантом использования (интерактором) как простое исключение. Я не думаю, что для варианта использования необходимо знать настоящее исключение.
- Когда я поймаю ошибку, я вызову метод в моем OutputBoundary (ведущий).
- В конце, этот докладчик отформатирует ответ и подготовит соответствующий ActionResult на основе DuplicatePersonException.
Если я соблюдаю «внутреннюю зависимость», я Мне нужно поместить DuplicatePersonException в слой моего варианта использования. Почему не на уровне домена? Потому что ему не обязательно знать об исключениях такого рода. Более того, я не знаю, нужно ли мне создавать абстрактное настраиваемое исключение и расширять его как на уровне шлюза, так и на уровне докладчика: это меня немного сбивает с толку.
Хорошо , это решение мне не нравится, но я не могу объяснить, почему. Мне кажется неправильным помещать мои исключения в этот слой.
В заключение, если у вас есть какие-либо советы или решения, я с удовольствием их приму!
Большое спасибо за попытку в помощь!