Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java—找出要抛出的异常类型_Java - Fatal编程技术网

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

java—找出要抛出的异常类型,java,Java,我面临以下问题已有一段时间了 假设您有一些代码,并且在某个时候需要抛出一个异常。假设我们想要抛出一个运行时异常 Java有很多例外,在某些情况下,您可能会发现一个适合您的情况 问题是我如何找出哪种例外情况最适合我的情况 我的问题只是关于RuntimeException的现有Java实现,而不是扩展此类的自定义异常 让我们举个例子。我有以下转换语句: switch(something){ case A: ... break; case B: ... break; default: th

我面临以下问题已有一段时间了

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

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

问题是我如何找出哪种例外情况最适合我的情况

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

让我们举个例子。我有以下转换语句:

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

最简单的解决方案是扩展
RuntimeException
并创建
NoSuchSwitchCaseDefinedException
。甚至抛出
运行时异常
。但是也许Java已经有了这样的功能。

浏览
RuntimeException
的直接已知子类,可能会让您更好地适应“目录”

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

  • ,表示程序中存在非法状态,或
  • ,表明论点不正确
  • 等等
如果您找不到完全匹配的,您应该毫不犹豫地根据您的需求扩展
异常
运行时异常

浏览
运行时异常
直接已知子类,可能会让您最适合“目录”

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

  • ,表示程序中存在非法状态,或
  • ,表明论点不正确
  • 等等

如果您找不到完全匹配的异常,您应该毫不犹豫地根据您的需求扩展
异常
运行时异常

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

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

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

重要的是,异常、它的名称、它的消息、它附带的JavaDoc注释使得识别是什么触发了错误、可能的解决方法以及最终如何修复错误变得尽可能简单

如果您编写的库可能由于使用不当而失败,那么使用特定于域的未检查异常可能会使使用该库更加愉快,因为您有机会为可能不清楚的错误提供大量上下文和文档


如果您正在编写最终用户应用程序或服务,您或您的时间可能是唯一看到这些异常的人之一,因此额外的工作可能不值得,只需抛出
RuntimeException
,并简要描述问题,因为它的信息可能就足够了。

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

重要的是,异常、它的名称、它的消息、它附带的JavaDoc注释使得识别是什么触发了错误、可能的解决方法以及最终如何修复错误变得尽可能简单

如果您编写的库可能由于使用不当而失败,那么使用特定于域的未检查异常可能会使使用该库更加愉快,因为您有机会为可能不清楚的错误提供大量上下文和文档


如果您正在编写最终用户应用程序或服务,您或您的时间可能是唯一看到这些异常的人之一,因此额外的工作可能不值得,只需抛出
RuntimeException
,并简要描述问题,因为它的信息可能就足够了。

那么
什么东西是从哪里来的呢,这件事没有得到处理意味着什么?也许
IllegalArgumentException
是合适的,例如…我使用Eclipse。在这种情况下,我所做的是:我只写try块,不写catch块。然后Eclipse抛出一些错误。Eclipse本身建议我应该使用哪个异常。我只是使用它们。@JavaProgrammer你一点也不考虑它吗?@khelwood,如果你不知道它抛出的异常类型,这只是一条捷径。那么
什么东西是从哪里来的,它没有被处理意味着什么?也许
IllegalArgumentException
是合适的,例如…我使用Eclipse。在这种情况下,我所做的是:我只写try块,不写catch块。然后日食投掷