У меня есть класс, который может выполнять множество типов преобразований для данного объекта.
Все данные предоставляются пользователями (через созданные вручную командные файлы), но по большей части невозможно определить, действительны ли файловые команды, до тех пор, пока мы не начнем их преобразовывать (если мы сначала проверим все, мы окажемся в итоге выполняет ту же работу, что и сами преобразования)
Эти методы преобразования вызываются для объекта, и он возвращает вновь преобразованный объект, однако, если возникает проблема, мы выкидываем исключение, поскольку возвращение объекта (даже пустого объекта) может быть перепутано с успехом, тогда как исключение отправляет сигнал сброса. возникла проблема, и объект не может быть возвращен. Это также означает, что нам не нужно вызывать функцию типа «получить последнюю ошибку», чтобы выяснить, что именно пошло не так (код ошибки, сообщение, утверждение и т. Д.)
Однако, прочитав многочисленные ответы на SO, кажется, что это неверно, поскольку неправильный ввод данных пользователем не является исключительным обстоятельством, и из-за сложности этой вещи пользователь нередко представляет неверные командные файлы.
Производительность здесь не является проблемой, потому что, если мы увидим ошибку, мы должны остановиться и вернуться к пользователю.
Если я использую коды возврата, мне нужно будет взять выходной объект в качестве параметра, а затем проверить коды возврата, которые мне понадобятся, если они будут долго вложенными в блоки (т. Е. Способ проверки HRESULT из COM)
Как бы я избегал исключений в этом случае, сохраняя при этом код достаточно аккуратным?