use*_*034 3 java exception sonarqube
我最近开始使用声纳作为代码审查工具。当我分析运行声纳的代码时,它反映打印堆栈跟踪违反了 java 编码标准。作为堆栈跟踪的替代方案,我尝试了:
e.getcause()
Run Code Online (Sandbox Code Playgroud)
但这并没有像堆栈跟踪那样清除异常
在任何环境中,错误处理都可能很棘手,包括 java。我没有使用过声纳,但我可以评论一下java错误处理的一般良好实践。
e.printStackTrace() 通常不鼓励使用,因为它只是将堆栈跟踪打印到标准错误。因此,您无法真正控制该输出的去向。
更好的做法是使用日志框架(logback、slf4j、java.util.logging、log4j 等),因为这样您就可以控制错误记录到的位置以及日志保留策略是什么。
通常,您需要捕获异常,如果这是意外行为,请将其记录下来,然后抛出一个新的异常(可能特定于您的应用程序)或执行任何您必须执行的操作以继续正常运行。
如果您使用 java.util.logging,您可以执行如下操作:
class YourClass
{
Logger logger = Logger.getLogger(YourClass.class.getName());
...
public void someMethod() throws YourException
{
try
{
// your code here
} catch (NullPointerException e)
{
String message = "Unexpected NullPointerException in processing!";
logger.log(Level.ERROR, message, e);
throw new YourException(message, e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
17338 次 |
| 最近记录: |