withdraw должен отклонять нулевую и отрицательную сумму до расчёта купюр и изменения остатков. Также проверяют поддерживаемую валюту, допустимые единицы суммы и возможность точной выдачи.
Как метод `withdraw` должен обрабатывать некорректные входные аргументы, в частности нулевую или отрицательную сумму?
withdraw должен отклонять нулевую и отрицательную сумму до расчёта купюр и изменения остатков. Также проверяют поддерживаемую валюту, допустимые единицы суммы и возможность точной выдачи.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
withdraw должен отклонять нулевую и отрицательную сумму до расчёта купюр и изменения остатков. Также проверяют поддерживаемую валюту, допустимые единицы суммы и возможность точной выдачи.
Для ошибки аргумента подходит IllegalArgumentException либо доменная ошибка по контракту API. Невозможность набрать сумму из текущих купюр — отдельный бизнес-результат, не то же самое, что некорректный ввод. Во всех случаях отказа запас должен остаться неизменным. Валидацию и списание нельзя разрывать так, чтобы конкурентная выдача делала проверку устаревшей.