“抛出这个”导致回溯中的奇怪线条

时间:2014-06-16 20:54:32

标签: java

好吧,这是有史以来编程最糟糕的例子之一,但我在研究别人的问题时尝试了,发现结果有点奇怪。有什么解释吗?

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 个答案:

答案 0 :(得分:9)

在初始化时创建Exception(真正Throwable)堆栈跟踪。您的例外是Bizarre实例,在第12行创建。