java – Runtim Exception扩展Exception和自定义异常从Exception扩展为什么后一个是编译时异常而另一个不是?

Java中,我有一个从Exception扩展的Exception类,但每当我抛出它时,编译器都说它需要被捕获/必须声明方法抛出Exception.

当我使用从Exception扩展的RuntimeException时,编译器不会停止,它将它们作为Runtime Exception,我们不需要处理它.

有没有办法让我可以从Exception扩展MyException并将其作为运行时异常.或者是什么使它成为RuntimeException类的可能性

private void compileTime() throws MyException{
        throw new MyException();
    }

    private void runTime() {
        throw new MyRuntimeException();
    }

    class MyException extends Exception {

    }
    class MyRuntimeException extends RuntimeException {

    }

解决方法:

RuntimeException是可以进行恢复的异常的未经检查的异常的子集.

在编译时不检查未经检查的异常,这意味着编译器不需要捕获或指定(带有抛出)它们的方法.

The unchecked exceptions classes are the class RuntimeException and
its subclasses, and the class Error and its subclasses.
All other
exception classes are checked exception classes.

请通过此图片检查异常层次结构:

简而言之,任何派生自“Exception”的异常都是一个经过检查的异常,而从RuntimeException派生的类是未经检查的.调用代码不需要显式处理RuntimeExceptions.

上一篇:请解释Java中的RuntimeException以及它应该在何处使用


下一篇:Java- RuntimeException-无法编译的源代码 – 错误的树类型