fre*_*low 6 java inheritance exception-handling liskov-substitution-principle exception
我发现Java的异常层次结构令人困惑.Throwable分为Error和Exception,并RuntimeException继承自Exception.
Error是一个未经检查的例外.为什么不从那时Error继承RuntimeException?
Exception是一个经过检查的例外 RuntimeException是一个未经检查的异常,但它继承自Exception.这不违反利斯科夫替代原则吗?
如果Throwable分为Exception(已检查)和RuntimeException(未经检查),并且Error会继承,那会不会更有意义RuntimeExeption?
我发现 Java 的异常层次结构令人困惑。Throwable分为Error和Exception,RuntimeException继承自Exception。
AThrowable是任何可用于展开调用堆栈的东西。这应该包括一些虚拟机级别的故障(由错误标记)和特定于应用程序的某些内容(由异常标记)
Error是一个未经检查的异常。那么为什么Error不继承RuntimeException呢?
很简单,因为错误不是异常。实际上“捕获”错误是没有任何意义的。例如。抓住后你会做什么OutOfMemoryError?错误旨在标记虚拟机级别发生的严重事件,而程序员不一定可以处理这些事件
异常是经过检查的异常。RuntimeException 是一个未经检查的异常,但它继承自 Exception。这不违反里氏替换原则吗?
并不真地。实现者想说的是必须始终检查异常。如果您的所有方法都声明它们抛出哪种类型的应用程序/库异常,您的代码将会更加干净。仅在更一般/动态的情况下才应抛出 RuntimeExceptions,例如NullPointerException开发人员可能没有针对该情况进行编码,但这是一个严重的错误,而这并不完全是应用程序规范中提到的内容。