Условие задачи: При запуске программа заканчивается исключением. Но из текста исключения в консоли неясно, где оно возникло. В этой задаче тебе нужно: обернуть в try-catch код методов addIce, addVodka, addJuice и addOrange; в блоках catch вызвать метод printBugMethodName и передать в него stack trace. Если сделаешь все правильно, при запуске программы на экран выведутся имена методов, в которых возникает исключение. Требования: • Нужно обернуть в try-catch код методов addIce, addVodka, addJuice и addOrange. • В методах addIce, addVodka, addJuice и addOrange в блоках catch нужно разместить одну команду - вызов метода printBugMethodName. • При каждом вызове метода printBugMethodName в него нужно передать текущий stack trace. Сокращенный код задачи (без полного решения и только с одним методом - addIce):
public class Solution {

    public static void main(String[] args) {
        Map<String, Integer> screwdriverIngredients = makeScrewdriver();
        String screwdriver = screwdriverIngredients.keySet().stream()
                .map(key -> key + "=" + screwdriverIngredients.get(key))
                .collect(Collectors.joining(", ", "{", "}"));
        System.out.println(screwdriver);
    }

    static Map<String, Integer> makeScrewdriver() {
        Map<String, Integer> ingredients = new TreeMap<>();
        addIce(ingredients);
        addVodka(ingredients);
        addJuice(ingredients);
        addOrange(ingredients);
        return ingredients;
    }

    static void addIce(Map<String, Integer> ingredients) {
        try {
            ingredients.put("ice cubes", 7); // обернула код метода в try
        } catch (Exception e) {
            printBugMethodName(!!!); // здесь нужно передать текущий stack trace
        }
    }

    public static void printBugMethodName(StackTraceElement[] stackTraceElements) {
        StackTraceElement stackTraceElement = stackTraceElements[1];
        System.out.println(stackTraceElement.getMethodName());
    }
}
Вопрос: В строке 24, если я передаю, e.getStackTrace, то валидатор не принимает решения. Если передаю Thread.currentThread().getStackTrace(), то решение проходит. Как я понимаю, Thread.currentThread().getStackTrace() - текущий стек трейс, а e.getStackTrace - то же самое, но специально для исключений. Почему тогда e.getStackTrace не подходит? P.S. Видела аналогичные вопросы, но из-за отсутсвия условия и кода задачи, там не было полного ответа, поэтому расписала подробно