我有一个我在项目中创建的运行时异常,我想确保它在我的一个类中被捕获,以便整个程序在发生时不会爆炸(即如果有人删除了try / catch语句我想知道通过在构建中使用某些东西或静态分析工具失败了。不幸的是,由于java没有强制我为这个未经检查的异常提供try / catch语句,因此无法在编译时强制执行它。 (我无法将我的异常更改为已检查的异常)。
我想知道是否有任何方法可以在特定的类中强制执行try / catch语句,可能使用checkstyle / pmd / findbugs自定义规则。 (检查特定类中的特定方法是否有针对我的运行时异常的try catch语句。)
感谢。
答案 0 :(得分:2)
运行时异常的想法是你不需要指定"抛出XYException"子句。
然而,您可以查看findbugs-contrib。如果没有解决它,您可以编写自己的自定义错误检测器。以下是一些起点:
答案 1 :(得分:1)
Checkstyle,FindBugs或PMD(或其贡献包)中没有现成的探测器可以满足您的需求。所以你必须自己动手。
在没有实际编程的情况下解决此问题的最简单方法是编写PMD XPath rule,在类X
和Y
块中查找方法catch
你的运行时异常。
如果失败了,custom Checkstyle check将是下一个最简单的,但它需要一点点编程,您将不得不随后在任何地方部署自定义检查。
您也可以按照另一个答案中的建议编写自己的FindBugs检测器,但由于您不会使用任何特定的FindBugs功能(例如字节码分析),对我来说似乎有些过分。