JAVA RuntimeException 异常一定要在源码中有 'throw new xxx' 才会抛出吗?

JAVA的RuntimeException类型的异常,是不是一定要在“源码”中有 “throw new xxx” 这样的动作才会抛出 ??

阅读 1k
2 个回答

是,但不一定是 java 源码
因为最后运行代码抛出异常的是jvm,一部分异常是 java 代码抛的,还有一部分是 jvm 自己抛的
比如下面代码会抛的异常都不是在 java 代码里写出来的,看源码也看不到抛出异常的具体位置(但是看 java 代码的位置就足够了)

class Scratch {
    public static void main(String[] args) {
        // test(1, 0);
        // test(null);
    }

    public static int test(int a, int b) {
        return a / b;
    }

    public static String test(Object o) {
        return o.toString();
    }
}

不完全是。RuntimeException 类型的异常是一种不受检查的异常,与编译器强制要求捕获或声明的受检异常不同。RuntimeException 及其子类是一种特殊类型的异常,它们不要求在代码中显式地使用 throw 语句抛出。它们通常与编程错误或逻辑错误相关,例如空指针引用、数组越界等。

这些异常是在运行时而不是编译时检测到的,因此即使代码中没有明确的 throw new xxx 语句,也可能因为运行时条件或错误而引发 RuntimeException 或其子类的异常。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题