В тех случаях, когда данные, используемые для принятия решения о том, какую ошибку вызывать, никогда не используются за пределами одного класса, оптимальным подходом является фактически жесткий код решения . Вот что такое прикладное программирование, а не системное или фреймворковое программирование. Я страдаю достаточно нарциссизма, не воображая себя божественным провайдером совершенной среды бизнес-программирования, чтобы осознавать, что иногда мой код будет использоваться только в том месте, где я его разрабатываю.
Поэтому я разработал два варианта решения этой проблемы:
1. Предлагаемый словарь строк (кодов) в качестве ключей для различных типов исключений, инициализированных в конструкторе; или же
2. Оператор switch среднего размера, с таким же жестким кодированием, как и в конструкторе выше.
В сценарии одноразового использования, который с большой вероятностью останется однократным в течение срока службы приложения, любое из перечисленного является более чем приемлемым решением; Это экономичное решение на базе YAGNI, которое позволяет мне уделять больше внимания проблемам, которые действительно требуют внимания.