作为希望完善其编程技能的Java程序员,我经常遇到必须创建运行时异常的情况。我知道,如果明智地使用它是一个好习惯。
就我个人而言, NullPointerException 和 IllegalStateException 是我创建的软件中最常用的。你呢?
您经常使用哪些运行时异常?您在什么情况下使用它们?
我从不抛出 NullPointerException
。对我来说,当出现问题时,它自然会出现在代码中,并且需要开发人员查看会发生什么。然后,他修复了原因,并且不再发生。
我使用 IllegalStateException
来表示对象配置错误或调用顺序不正确。但是,我们都知道,理想情况下,对象应确保它不会处于不良状态,并且您不能以不正确的顺序调用它(制造一个生成器和一个生成的对象…)。
当一个方法检测到其参数不正确时,我会使用很多 IllegalArgumentException
。这是任何公共方法的责任,即停止处理(以避免更难理解的间接错误)。同样,if
方法开头的几个s用于文档目的(文档永远不会偏离代码,因为它是代码:-))。
public void myMethod(String message, Long id) {
if (message == null) {
throw new IllegalArgumentException("myMethod's message can't be null");
// The message doesn't log the argument because we know its value, it is null.
}
if (id == null) {
throw new IllegalArgumentException("myMethod's id can't be null");
// This case is separated from the previous one for two reasons :
// 1. to output a precise message
// 2. to document clearly in the code the requirements
}
if (message.length()<12) {
throw new IllegalArgumentException("myMethod's message is too small, was '" + message + "'");
// here, we need to output the message itself,
// because it is a useful debug information.
}
}
我还使用 特定的运行时异常 来表示更高级别的异常情况。
例如,如果我的应用程序的模块无法启动,则当另一个模块调用它时,可能会引发 ModuleNotOperationalException
(理想情况下是由诸如拦截器之类的通用代码,否则由特定代码引起)。在做出架构决定之后,每个模块都必须处理调用其他模块的操作上的此异常。
问题内容: 通常,如果有任何类extends ,它将成为检查异常。还扩展了Exception。那么它是如何? 难道他们在这种特殊情况下会在 编译器中 自定义检查? 编辑: 我对已 检查的v / s未检查的异常 以及它们的优缺点等有适当的了解。我不接受它们之间的区别。 问题答案: 在规范的第11.1.1节中有明确规定: 及其所有子类共同是 运行时异常类 。 在 未经检查的异常类 是运行时异常类和错误
我试图学习Java FX,所以我使用了一些Oracle Eample代码,但当我试图在Netbean IDE中运行它时,它给了我一个运行时错误。下面是一段代码: 而这是个例外。 Edit:好的,基于rob的回答,我添加了我在示例中遗漏的扩展,现在在我尝试扩展代码后,它甚至给出了更多的异常。下面是该异常的新代码和日志。 这是异常日志:
问题内容: 运行单元测试时,我遇到了jar hell的问题。 我遇到了上述错误,并通过删除了不必要的jar文件解决了这些错误。 但是我面临以下两个jar的问题,即tomcat-embed-core-8.0.36.jar和hibernate- jpa-2.1-api-1.0.0.Final.jar。这两者之间有一个共同的类,我需要两个jar文件,任何人都可以向我解释如何解决此问题。我都需要jar文件
问题内容: 我正在开发一个小型应用程序,并且尝试使用Hibernate Annotations映射我的实体。我想测试一下出现此异常时一切是否正常: 有人可以解释这个异常是什么吗?这是我第一次看到它。这是我的应用程序的主要内容: 我的hibernate配置非常简单: 这是我正在使用的hibernateMaven依赖项: 有谁可以帮助我吗 ?? 问题答案: 这意味着在某个时候将an 更改为,但是原始接
问题内容: 什么时候应该创建一个检查异常,什么时候应该创建一个运行时异常? 例如,假设我创建了以下类: 我应该如何创建我的?它应该扩展还是?还是我应该只使用它? 问题答案: 在这个话题上有很多分歧。在我的上一份工作中,我们遇到了一些实际问题,运行时异常被遗忘了,直到它们出现在生产环境中(在ageswards.com上),因此我们决定只使用已检查的异常。 在我目前的工作中,我发现在很多情况下都有很多
问题内容: 最近,我接受了公司的采访,他们给了我一个编码问题。我得到了与纸牌有关的程序,其中一种方法是将纸牌洗牌。因此,我将该程序编写为: 在上面的代码中,我引发了我最怀疑的 IllegalArgumentException 。在什么情况下实际上应该抛出运行时异常?我们是否应该实际抛出运行时异常? 谢谢 问题答案: 我们是否应该实际抛出运行时异常? 是的,我们应该。运行时异常有特定的用途-它们发出