"бросьте это" приводит к странной линии в backtrace


Хорошо, это один из худших примеров программирования, но я попробовал его, изучая чей-то вопрос, и обнаружил, что результаты немного странные. Какие-нибудь объяснения?

public class Test {

    static class Bizarre extends RuntimeException {

        public void throwMe() {
            throw this;                   // line 6
        }

    }

    public static void main(String[] args) {
        Bizarre biz = new Bizarre();             // line 12
        System.out.println("Output line 1");     // line 13
        biz.throwMe();                           // line 14
        System.out.println("Output line 2");     // line 15
    }
}

Результирующий вывод:

Output line 1
Exception in thread "main" Test$Bizarre
        at Test.main(Test.java:12)

Почему строка 12?

1 4

1 ответ:

При инициализации создается трассировка стекаException (Throwable на самом деле). Ваше исключение, экземпляр Bizarre, создается в строке 12.