Решение не проходит валидацию по 3 пункту. Подсказка ментора: "При возникновении исключения InterruptOperationException, в методе main класса CashMachine нужно попрощайся с пользователем в блоке catch используя ConsoleHelper".
Исключение выбрасывается в ConsoleHelper.readString() при условии, что введенная строка эквивалентна "EXIT" независимо от регистра, и пробрасывается наверх до main(). В том же методе readString() обрабатывается IOException, хотя я планировал его пробросить и обработать в другом месте, но валик ругался на то что readString() должен пробросить только 1 исключение.
В CashMachine все тело метода main() заключено в блок try/catch и отлавливается именно InterruptOperationException, после чего через ConsoleHelper.writeMessage() выводится строка прощания с пользователем и программа завершается. если в try/catch оборачивать не все тело main() а только operation = ConsoleHelper.askOperation(); CommandExecutor.execute(operation); то результат не меняется (естественно в этом случае в catch operation = Operation.EXIT иначе прога будет жить в бесконечном цикле).
Теперь, после того как вы прочли это и посмотрели код - поясните мне, что я упускаю из вида, потому как кажется, что перебрал всё.
package com.javarush.task.task26.task2613;
import com.javarush.task.task26.task2613.command.CommandExecutor;
import com.javarush.task.task26.task2613.exception.InterruptOperationException;
import java.util.Locale;
public class CashMachine {
public static void main(String[] args) {
try {
Locale.setDefault(Locale.ENGLISH);
Operation operation = null;
do {
ConsoleHelper.writeMessage("Choose an operation to execute:\n1. - INFO | 2. - DEPOSIT |" +
" 3. - WITHDRAW | 4. - EXIT");
operation = ConsoleHelper.askOperation();
CommandExecutor.execute(operation);
} while (operation != Operation.EXIT);
} catch (InterruptOperationException e) {
ConsoleHelper.writeMessage("Bye!");
}
}
}