我正在处理一个项目(其他人的代码),其中一个方法被声明为抛出一堆它不可能抛出的已检查异常。
基本上,该方法如下所示:
// Assume E1 extends Exception
// Assume E2 extends Exception
// Assume E3 extends Exception
public void method(Object param) throws E1, E2, E3 {
// Call a bunch of methods, none of which are declared to
// throw checked exceptions.
}
当然,我删除了 throws
子句。当然,我这样做没有收到任何编译器错误,因为根据代码的静态分析,抛出这些异常是不可能的。
所以我的问题是,为什么 Eclipse 及其构建器或 javac
没有警告我这些虚假的 throws
声明?有什么我可以开启的东西来实现这一目标吗?
最糟糕的是,如果我得到了我应该得到的警告,就会产生级联效应,因为 method()
的所有调用者要么重新声明相同的 throws
或包含一堆无用的 try
/catch
block ,这绝对会混淆程序的含义。
最佳答案
如果 throws 子句中包含不必要的异常,您可以强制 Eclipse
给出编译时错误/警告。
请引用以下截图:
关于java - 我怎样才能让 Eclipse(或 javac)警告过度包容的 throws 条款,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30719188/