我有以下课程。
public class ValidationException extends RuntimeException {
}
和
public class ValidationException extends Exception {
}
我对自定义异常何时应该扩展RunTimeException
以及何时必须扩展感到困惑Exception
。您能否解释一下RunTimeException
直接扩展是否有任何缺点?
谢谢!
不选中RuntimeException,而选中Exception(调用代码必须处理它们)。
RuntimeException
如果您 想取消选中 自定义异常,则应扩展 它, 否则请使用扩展它Exception
。
对于未经检查的异常,不需要调用代码方法在throws子句中声明在RuntimeException
方法执行期间可能抛出但未被捕获的任何子类。
由于调用方法可能无法处理“ RuntimeException”,因此 在抛出RuntimeException时 需要 小心 。
运行时异常表示由编程问题引起的问题,因此,无法合理地期望API客户端代码从它们中恢复或以任何方式进行处理。这些问题包括算术异常,例如除以零;指针异常,例如尝试通过空引用访问对象;以及索引异常,例如尝试通过太大或太小的索引访问数组元素。
运行时异常可能在程序中的任何地方发生,在典型情况下,异常可能非常多。必须在每个方法声明中添加运行时异常会降低程序的清晰度。因此,编译器不需要捕获或指定运行时异常(尽管可以)。
出处/进一步阅读: 未经检查的异常-
争议
问题内容: 阅读的JavaDoc ,我碰到了一个奇怪的方法签名;我一生中从未见过: 乍一看,我想知道通用异常怎么可能发生,因为您不能这样做(here和here)。再三考虑,这开始变得有意义,因为这里只是绑定…,但是供应商本身确切知道泛型之前应该是什么类型。 但是第二行打给我: 是完整的通用异常类型。 然后: 什么世界呢 这 是什么意思? 已绑定在方法签名中。 这将以任何方式解决通用异常限制吗? 为
Szenario:我有两个扩展,它们用一些特定字段扩展了。在TYPO3 9之前,我必须使用以下打字脚本配置对新闻扩展的依赖关系进行配置: 模型扩展了基本扩展的模型: 在TYPO3 10中,在(中断:#87623): 只要您只有一个扩展新闻扩展名的扩展名,它就可以工作多久。如果您有第二个扩展并启用TYPO3缓存,您将得到一个错误,即在第一个扩展中添加的字段在新闻扩展的模板中不可用。奇怪的是,这个问题
这是我现在面临的问题。我有一个类,假设 ,这个类定义了一个名为 的方法,该方法返回一个 实例。类 在 内部定义,并被声明为。我想做的是定义一个扩展的类,但我也我自己的功能(方法,属性等)来扩展。我也希望返回。 问题是< code>Bar是最终的。下面是我想做的一个例子: 我想做的是: 我怎样才能做到这一点? [编辑]我正在为我的问题添加更多详细信息。我实际上正在为 Jenkins 开发一个插件,搜
问题内容: 我想扩展ArrayList,为特定类添加一些方法,这些类的实例将由扩展的ArrayList保存。下面是一个简化的说明性代码示例。 这对我来说似乎是明智的,但是我对Java还是很陌生,我看到了其他阻碍扩展ArrayList的问题,例如,扩展ArrayList和创建新方法。我对Java的理解不够了解。 在我先前的尝试中,我最终在ThingContainer中创建了许多实际上是传递给Arra
由于Log4J2的类是,所以我不能扩展它来为我的CSV创建头。 我参考了文档,它没有提供关于如何扩展现有布局的信息。http://logging.apache.org/log4j/2.x/manual/extending.html#布局 以前扩展PatternLayout的方法不起作用。 我的目标是给日志文件添加头&头应该通过下面的日志的配置文件来配置,
问题内容: 我有一个枚举,我们称它为A: 我有一个需要枚举A的函数: 如何创建另一个枚举,可能调用B并传递给 functionA ?像这样吗 我知道您无法扩展枚举,但是我还有哪些其他选择?实现此目标的最佳方法是什么? 问题答案: 你不能 枚举类型在设计上是最终的。 原因是每个枚举类型都应 仅 具有 在枚举中声明的元素 (例如,我们可以在switch语句中使用它们),如果允许扩展类型,则不可能。 您