二.异常日志

异常处理

1.Java类库中定义的一类RuntimeException可以通过预先检查进行规避,不应该通过catch来处理比如数组下表越界,空指针等

2.异常不要用来做流程控制,条件控制,因为异常处理的效率比条件分支低

3.try-catch操作包裹的代码应尽可能的排除稳定代码

4.finally对象必须对资源对象,流对象进行关闭,在JDK7以上使用try-with-resources方式

public class TryWithResource {

    public static void main(String[] args) {
        try (BufferedInputStream bin = new BufferedInputStream(new FileInputStream(new File("test.txt")));
             BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(new File("out.txt")))) {
            int b;
            while ((b = bin.read()) != -1) {
                bout.write(b);
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5.不能在finally块中使用return,finally块中的return返回后方法执行结束,不会再执行try块中的return语句

6.捕获异常与抛出异常必须完全匹配,或者捕获异常是抛异常的父类

7.方法的返回值可以为NULL,不强制返回空集合,空对象等,必须注释充分说明什么情况下会返回null值,调用方需要进行null判断防止空指针问题

8.空指针产生的可能场景:

  • 返回类型为基本数据类型,return的时候是包装类型对象,自动拆卸有可能产生NPE
  • 数据库的查询结果可能为null
  • 集合里的元素即使不为null,取出的数据元素也可能为null
  • 远程调用返回对象,一律要求进行空指针判断
  • 对于Session中获取的数据,需要进行检查
  • 级联调用的情况下,容易产生NPE,例如obj.getA().getB()

9.定义时区的时候区分uncheck与check异常,避免直接抛出运行时异常

10.对于公司外的http/api开放接口应使用错误码,对于应用内部应抛出异常

日志

1.应用中不可直接使用日志系统中(log4j,logback)的API,而应该以来日志框架SLF4J中的API

2.日志文件应至少保存15天,因为有些异常以周为频次发生

3.在log4j.xml中设置additivity=false避免重复打印日志

4.日志的级别详情如下:

5.日志的打印应该使用占位符而不是使用+拼接字符串

6.关于异常的信息应包含两部分:案发现场信息与异常堆栈信息

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值