当前位置: 首页 > 知识库问答 >
问题:

重构方法以最多引发一个已检查异常,而不是ExecutionException和InterruptedException

羊舌和安
2023-03-14

我有个方法就像

public void methodName() throws ExecutionException, InterruptedException {}

SonarQube对此方法提出了一个问题,建议重构此代码。

如果我将这些异常替换为异常(这两个异常都进行了扩展),则表示抛出例外过于泛化。

如何解决此问题?

确切的sonarQube消息:重构此方法以引发atmost一个已检查异常,而不是ExecutionException、InterruptedException

sonarQube的详细提示:https://sbforge.org/sonar/rules/show/squid:S1160?layout=false

共有1个答案

壤驷睿
2023-03-14

我真的没有答案给你,但我想可能值得更深入地研究例外。我在 docs.oracle.com 上查找了以下定义:

ExecutionException:试图检索因引发异常而中止的任务的结果时引发异常。可以使用Throwable.getCause()方法检查该异常。

InteruptedException:当线程正在等待、睡眠或以其他方式被占用,并且线程在活动之前或期间被中断时抛出。有时,一个方法可能希望测试当前线程是否已被中断,如果是,则立即抛出此异常。可以使用以下代码来实现此效果:if(Thread.interrupted ()) // Clears中断状态!抛出新的InterruptedException();

话虽如此,也许执行异常的本质意味着我们不必担心捕获InteruptedException(因为当错误处理另一个抛出的异常时会引发ExcecutionException)。所以也许我们尝试这样的事情:

public void methodName() throws ExecutionException {}
 类似资料:
  • 如何从一个方法中同时抛出多个异常?示例: 编辑:一个条件同时抛出Exception1和Exception2。可能?这只是一个测试抛出异常的演示文件。

  • 问题内容: 检查表是否存在于MySQL中(最好通过PHP中的PDO)而不抛出异常的最佳方法是什么。我不喜欢解析“ SHOW TABLES LIKE”等的结果。必须有某种布尔查询吗? 问题答案: 我不知道它的PDO语法,但这看起来很简单:

  • 问题内容: 据我了解,如果不逐一查找API文档,就无法找出方法抛出的异常。 由于这是没有选择的,因此我想撤消研究,并询问您在处理时遇到的最常见的Exception和RuntimeException: 铸件 数组 向量,ArrayList,HashMap等 IO(文件类,流,过滤器…) 对象序列化 线程(wait(),sleep()等) 或任何其他被视为“基本Java”的内容 我意识到这可能是主观的

  • 正如您所看到的,我已经尝试实现NPE但没有成功。如何在一个JUnit方法中检查多个异常?我在网上检查了一些操作方法,但也失败了。

  • 问题内容: 我想知道只有Integer.parseInt(无论如何)都不会失败的情况下才能做些什么。 更具体地说,我有一个jTextArea用户指定值,由换行符分隔。 我想检查每一行,看看是否可以转换为整数。 想出了类似的东西,但是不起作用: 任何帮助表示赞赏。 问题答案:

  • 我有以下两个示例,我不清楚java.lang.Exception是如何处理的:作为检查的或未检查的异常。 以下方法编译成功: 在这里,我认为java.lang.Exception是威胁java.lang.RuntimeException或java.lang.Error。不处理也可以声明扔。 如果我们没有使用异常,而是使用了检查异常(它是java.lang.Exception的子类),那么您必须在方