java - 找出要抛出的异常类型

时间:2016-02-03 11:48:59

标签: java

我在一段时间内遇到了以下问题。

假设你有一些代码,在某些时候你需要抛出异常。假设我们想要抛出一个运行时异常。

Java有很多例外,在某些情况下,您可能会找到一个适合您的情况。

问题是如何确定哪种例外最适合我的情况?

我的问题只是关于warranty的现有Java实现,而不是扩展此类的自定义异常。

我们举一个例子。我有以下switch语句:

RuntimeException

我应该使用什么代替switch(something){ case A: ... break; case B: ... break; default: throw new AJavaRuntimeException("No such case defined"); } 并附带Java?如何通过Java找到正确的异常?

最简单的解决方案是扩展AJavaRuntimeException并创建RuntimeException。或者甚至抛出NoSuchSwitchCaseDefinedException。但是......也许Java已经有了这方面的东西。

3 个答案:

答案 0 :(得分:2)

浏览API以获取RuntimeException直接已知子类,可能会让您最适合“目录”。

在这种情况下,您可以抛出:

如果找不到完全匹配,则应根据您的要求(检查与未检查)延长ExceptionRuntimeException

答案 1 :(得分:2)

如果您需要独立抛出异常,最好抛出一个自定义用户定义的异常,并且必须对其进行检查。 永远不要自己抛出运行时异常。 创建业务异常并抛出它们。

答案 2 :(得分:0)

这里有很多哲学要遵循。我遵循的哲学是未经检查的异常(即从 RuntimeException Error 继承的所有内容)仅用于报告编程错误(例如,通过错误对话框或日志消息)。编程错误只能以一般方式处理(例如通过中止操作,跳过可选的处理步骤等)。这意味着从技术意义上讲,用于异常的实际类型并不重要。

重要的是,异常,其名称,其消息以及随附的JavaDoc注释使它尽可能简单地确定是什么触发了该错误,可能的解决方法以及如何最终修复该错误。

如果您编写的库可能由于使用不正确而失败,则具有特定于域的未经检查的异常可能会使使用该库更加愉快,因为您有机会为可能会为错误提供的大量上下文和文档晦涩。

如果您正在编写最终用户应用程序或服务,则您或您的时间很可能是唯一看到这些异常的人之一,因此,额外的工作可能不值得,而短时间内抛出RuntimeException对问题进行描述,因为其消息可能就足够了。