Здравствуйте, vmpire, Вы писали:
S>>Как предпочитает делать большинство?
V>Большинство предпочитает соблюдать гайдлайны: если это ожидаемая ошибка (например, пользовательский ввод) — не использовать исключения, а проверять явно и возвращать код возврата (или как-то ещё сообщать о неудаче).
Пользовательский ввод и ожидаемое исключение (как в Java) -- это несколько разное. К примеру при открытии файла FileNotFoundException -- будет ожидаемым, но вы же не станете в этом случае использовать код возврата?
V>Если не ожидаемая — кидать исключение и ловить его где-то в точке возможного восстановления. Или даже не ловить вообще, зависит от приложения.
V>http://www.informit.com/articles/article.aspx?p=2133373&seqNum=6
V>https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/exception-throwing
Давайте ближе к нашему примеру с переводом средств. Вы бы делали NotEnoughMoneyException или код возврата?
В guidelines не вижу нигде совета делать коды возврата для данного сценария, наоборот написано "DO
NOT return error codes".
Перевод средств с пустого счета целиком аналогичен открытию несуществующего файла. Если при открытии несуществующего файла принято выбрасывать исключение, то почему при переводе с пустого счета нужно поступать иначе?