当异常已更改为自定义异常时,为什么 SonarQube 会抱怨通用异常
Why SonarQube complains about generic Exception when the exception has been changed to custom one
我一直在为一个别人做的应用程序做 JUnit 测试,我无法修改原始代码,所以当我遇到这样的事情时:
public String clean(String url) throws Exception {
if (url.indexOf(invalidURL) {
throw new Exception("Severe XSSS detected");
}
}
我用以下方法编写测试:抛出异常,SonarQube 抱怨通用异常,如果我编写自定义异常,如:public class MyException extends Exception
,SonarQube 仍然不喜欢它,任何帮助将不胜感激!
我正在解释您的代码:如果参数 url
包含此无效 [=22],您似乎在某处有一个无效的 URL 并且您不想做您的业务=].所以我猜 IllegalArgumentException
比通用 Exception
.
更精确
来自 IllegalArgumentException
的 JavaDoc:
Thrown to indicate that a method has been passed an illegal or inappropriate argument.
此外,我假设 SonarQube 此时会接受 IllegalArgumentException
而不会抱怨。
MyException
扩展了 Exception
,所以你也必须更改方法声明 - throws
语句:
public String clean(String url) throws MyException {
if (url.indexOf(invalidURL) {
throw new MyException("Severe XSSS detected");
}
}
更改是安全的,因为代码与之前的选项兼容:
try {
object.clean("invalidUrl")
} catch (Exception e) {
// MyException is handled by this catch block
}
现有答案提供了有用的信息,但如果您在原始 post 中指定的限制是正确的,那么这些答案并没有真正帮助。
如果您不能实际修改被测代码,则无法解决 SonarQube 问题。
我一直在为一个别人做的应用程序做 JUnit 测试,我无法修改原始代码,所以当我遇到这样的事情时:
public String clean(String url) throws Exception {
if (url.indexOf(invalidURL) {
throw new Exception("Severe XSSS detected");
}
}
我用以下方法编写测试:抛出异常,SonarQube 抱怨通用异常,如果我编写自定义异常,如:public class MyException extends Exception
,SonarQube 仍然不喜欢它,任何帮助将不胜感激!
我正在解释您的代码:如果参数 url
包含此无效 [=22],您似乎在某处有一个无效的 URL 并且您不想做您的业务=].所以我猜 IllegalArgumentException
比通用 Exception
.
来自 IllegalArgumentException
的 JavaDoc:
Thrown to indicate that a method has been passed an illegal or inappropriate argument.
此外,我假设 SonarQube 此时会接受 IllegalArgumentException
而不会抱怨。
MyException
扩展了 Exception
,所以你也必须更改方法声明 - throws
语句:
public String clean(String url) throws MyException {
if (url.indexOf(invalidURL) {
throw new MyException("Severe XSSS detected");
}
}
更改是安全的,因为代码与之前的选项兼容:
try {
object.clean("invalidUrl")
} catch (Exception e) {
// MyException is handled by this catch block
}
现有答案提供了有用的信息,但如果您在原始 post 中指定的限制是正确的,那么这些答案并没有真正帮助。
如果您不能实际修改被测代码,则无法解决 SonarQube 问题。