sonar常见缺陷和修改

本文讨论了Java编程中Sonar报告的常见问题,包括资源未关闭、InterruptedException被忽略、不应访问空指针以及静态非线程安全字段。提供了改进方案,如使用try-with-resource语句管理资源,正确处理InterruptedException,避免空指针异常,以及避免静态非线程安全字段在多线程环境中的使用。
摘要由CSDN通过智能技术生成

1. Resources should be closed

IO资源应该在使用后关闭。在try语句中使用了Connections, streams, files等,这些类实现了Closeable 或者AutoCloseable接口,必须在finally块中关闭,否则,如果出现异常就可能无法关闭。对于实现了AutoCloseable接口的类,最好使用“try-with-resource”语句来自动关闭。如果不能正确地关闭资源,就会导致资源泄漏,这可能会导致应用程序甚至整个系统的崩溃。

关于IO资源的处理问题,以下比较三种解决方案。

  • close()放在try块中
  • close()放在finally块中
  • 使用try-with-resource语句

close()放在try块中

//close() is in try clause
try {
    PrintWriter out = new PrintWriter(
            new BufferedWriter(
            new FileWriter("out.txt", true)));
    out.println("the text");
    out.close();
} catch (IOException e) {
    e.printStackTrace();
}

这种方式容易造成IO资源的泄露,因为对于IO资源来说不管操作的结果如何都必须关闭。

close()放在finally块中

//close() is in finally clause
PrintWriter out = null;
try {
    out = new PrintWriter(
        new Buff
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值