Java 引发IOException和RuntimeException之间的区别

Java 引发IOException和RuntimeException之间的区别,java,exception,Java,Exception,为什么当我在方法内部抛出RuntimeException时,我没有得到任何错误,但是当我在方法内部抛出IOException时,我也需要从方法中抛出异常 public void throwException() { throw new RuntimeException(); } 这个很好用。当我抛出IndexOutOfBoundsException、NullPointerException和inputmaschException等等时,也会发生同样的情况 但是当我抛出IOExcepti

为什么当我在方法内部抛出
RuntimeException
时,我没有得到任何错误,但是当我在方法内部抛出
IOException
时,我也需要从方法中抛出异常

public void throwException() {
    throw new RuntimeException();
}
这个很好用。当我抛出
IndexOutOfBoundsException
NullPointerException
inputmaschException
等等时,也会发生同样的情况

但是当我抛出
IOException
时,该方法也必须抛出
IOException

public void throwException() throws IOException {
    throw new IOException();
}

RuntimeException
是未检查的异常,您不需要将方法标记为引发此异常。从:

由于Java编程语言不需要方法来捕获或指定未检查的异常(RuntimeException、Error及其子类),程序员可能会试图编写只抛出未检查异常的代码,或者使其所有异常子类继承RuntimeException


顾名思义,您不需要检查这样的运行时异常,因此语言规范不要求您用
抛出

标记方法
运行时异常
是未检查的异常,您不需要将方法标记为抛出此异常。从:

由于Java编程语言不需要方法来捕获或指定未检查的异常(RuntimeException、Error及其子类),程序员可能会试图编写只抛出未检查异常的代码,或者使其所有异常子类继承RuntimeException


顾名思义,您不需要检查这样的运行时异常,因此语言规范不要求您使用
throws
标记方法。您基本上是在问这个问题。IOException是更具体的Java.Lang.Exception


你基本上是在问这个问题。IOException是更具体的Java.Lang.Exception


IOException
是一个(也就是说)常规异常,它不是
RuntimeException
的子类,后者是一种特殊异常的超类

取自(矿山)

RuntimeException是那些异常的超类,可以 在Java虚拟机正常运行期间抛出

RuntimeException及其子类是未检查的异常无需在方法中声明未检查的异常或 构造函数的throws子句,如果可以通过执行 方法或构造函数,并在方法或 构造函数边界


IOException
是一个(可以说)常规异常,它不是
RuntimeException
的子类,后者是一种特殊异常的超类

取自(矿山)

RuntimeException是那些异常的超类,可以 在Java虚拟机正常运行期间抛出

RuntimeException及其子类是未检查的异常无需在方法中声明未检查的异常或 构造函数的throws子句,如果可以通过执行 方法或构造函数,并在方法或 构造函数边界