小编ocr*_*tte的帖子

如何在Java中找到潜在的未经检查的异常?

根据Java规范,Java编译器根据"throw"语句和方法签名自动验证是否捕获了所有已检查的异常,并忽略未经检查的异常.

但是,有时开发人员可以找出可以抛出哪些未经检查的异常,例如某些第三方代码可能会在开发人员倾向于期望检查异常(如Long.parseLong)的情况下抛出未经检查的异常.或者开发人员可能会将未经检查的异常作为未来检查异常的占位符而忘记替换它.

在这些示例中,理论上可以找到这些未被捕获的未经检查的异常.在第一种情况下,Long.parseLong的签名表示它抛出NumberFormatException,在第二种情况下,源代码可用,因此编译器知道抛出了哪些未经检查的异常.

我的问题是:是否有可以报告这些案例的工具?或者也许让Java编译器处理暂时未经检查的异常的方法是检查异常?这对于手动验证并修复可能导致整个线程或应用程序在运行时崩溃的潜在错误非常有用.

编辑:在得到一些答案之后,我必须强调我的目标不是找到系统中可能存在的未经检查的异常的详尽列表,而是由于未经检查的异常导致的潜在错误.我认为归结为两种情况:

  1. 方法的签名表示它抛出一个未经检查的异常,并且调用者没有捕获它
  2. 方法的主体显式抛出未经检查的异常,并且调用者不会捕获它们

java static-analysis exception-handling software-quality exception

6
推荐指数
2
解决办法
2200
查看次数