java - "throw this"在回溯中产生奇怪的行

标签 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 行?

最佳答案

Exception(实际上是Throwable)堆栈跟踪在初始化时创建。您的异常是一个 Bizarre 实例,是在第 12 行创建的。

关于java - "throw this"在回溯中产生奇怪的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24252034/

相关文章:

java - 在java中使用反射时出现未处理的异常

使用 OpenAM token 来确定用户的 Java REST API?

java - 获取不同区域用户当前客户端日期和时间的方法

java - 我想让 JTextField 成为复选框的一部分或以某种方式将它们连接在一起

java - 如何在单元测试中用内容数据模拟页面?

java - 无法打开 JPA EntityManager 进行事务处理;嵌套异常是 java.lang.IllegalStateException

java - 如何使用 BottomNavigationBar 保存 fragment 的状态?

java - tomcat 启动 java.lang.ClassNotFoundException : [Ljava. lang.String;

java - 在真实设备中膨胀类 CoordinatorLayout 时出错,但模拟器工作

java - Javadoc 工具是否有版本控制过程?