这是可能的在Java抛出任何异常,即使它是刚刚宣布抛出的时刻,下面的例子:
import org.springframework.dao.DataAccessException;
// DataAccessException - is abstract class
} catch (DataAccessException dae) {
throw new DataAccessException("Exception while executing SQL: \n" + sql
+ "\nparams: " + paramsToString(params), dae) {
private static final long serialVersionUID = 1L;
};
}
请分享你对这种方法的好坏的看法。
同样的问题是扩展RuntimeException(这不是抽象的)并立即扔掉它。
对你的例子很好。异常实例只是一个类(扩展了异常)名称加上捕获时所需的信息。通常,类名就是(catch语句)所需的全部内容。通常包括消息和堆栈跟踪。(尽管它们对于捕获的异常都很无用。)但有时需要更多的信息。扩展类是一种很好的方法。
如果性能很重要(使用SQL时可能不会),请覆盖fillInStackTrace。填充堆栈跟踪很慢,如果您计划捕获异常,则不需要它。
不要扩展RunTimeException;你不会被警告有可能抛出它的方法,你可能会忘记捕捉它。
请分享你对这种方法的好坏的看法。
这应该是合法的。。。根据我对Java语言的理解。
我认为从功能的角度来看这是毫无意义的。调用方仍然必须捕获您创建的匿名子类型的基本异常。它不像匿名子类的名称传达任何有用的信息。。。
我认为从代码可读性和可维护性的角度来看,这是不好的。它是模糊的,没有充分的理由,也没有有用的效果,我可以看出。
做这样奇怪的事情有可能会破坏东西......比如你的调试器、源代码分析器或你Java链中的其他工具。
总之,这是一个没有可取之处的坏主意。
问题内容: 我有一个关于Java中重新引发异常的非常简单的问题。 这是代码片段: 为什么我们需要在第一个版本中重新抛出,而第二个版本看起来更优雅?可能有什么好处,并且优先选择哪个版本? 问题答案: 你是对的。第二版更好。而且,第一个版本没有任何意义。除了异常的堆栈跟踪为“错误”之外,它的功能相同。 有“重新抛出”异常的原因如下: 如果您之前有事要做。 如果捕获一种类型的异常并抛出另一种类型的异常:
抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因
问题内容: 我目前正在使用play2框架。 我有几个正在抛出的类,但是play2s全局处理程序使用throwable而不是异常。 例如我的一门课是抛出一个。我是否可以检查可抛物体(如果是)? 问题答案: 您可以使用它来检查它是否存在。 例: 假设是参考。
问题内容: Visual Studio有一个选项,可以在引发未处理的异常时自动将其插入调试器,Eclipse是否具有类似的功能? 问题答案: 即使未捕获到这些异常,您也可以定义要在其上创建断点的确切的异常列表(应该等效于“ unhandled”)
@apiResponse似乎也没有更正响应类型。 如本问题所述,如何在swagger Codegen中处理多个响应/返回类型(204为空,400为非空等)? 我可以这样扔 但是有没有更好的方法来做到这一点呢?我只想将.getResponseBody()作为对象而不是字符串返回。 非常感谢。
我在Spring/Hibernate网络应用程序上有以下代码: 实体: 听众: 此代码在实体上每次更新或持久化后调用。问题在于,当为负数量引发异常时,hibernate将上的