zoukankan      html  css  js  c++  java
  • 阿里Java开发手册学习 2 异常日志

    异常日志

     异常处理

    1.不要捕获继承自RuntimeException的运行时异常类,这类异常通常由程序员来校验,来保证查询的健壮性。

    2. 不要对大段代码 try catch,分清稳定代码和非稳定代码。对于非稳定代码,区分情况经行catch。

    3.如果有try快放到了事物代码中,catch异常后,如果要回滚事物一定要手动回滚事物。

    4.方法的返回值为null,必须添加注释充分说明说明情况下会返回null 。

    5. 放置NPE,是程序员的基本修养,注意产生NPE的场景

        1)返回类型为包装数据类型,可能是null,返回int值时注意判空。

        2)数据库查询的结果可能为null。

        3)集合里的元素即使isNotEmpty,取出的数据元素也有可能为null。

        4)远程调用返回对象,一律要进行NPE判断。

        5)对于Session中获取的数据,建议NPE检查,避免空指针。

        6)级联调用obj.getA().getB().getC(); 一连串调用,易产生NPE。

    6.对于”抛异常“还是“错误码”,对于公司外的http/api开放接口,必须使用“错误码”;而应用内部推荐异常抛出;跨应用间RPC调用优先考虑使用Result方式,封装isSuccess ,code,message

    7.避免出现tt重复的代码,必要时抽取共性方法,或者抽象公共类,甚至是公共模块。

     日志规约

    1.日志记录请使用以下方式

    import org.slf4j.Logger; 

    import org.slf4j.LoggerFactory; 

    private static final Logger logger = LoggerFactory.getLogger(Abc.class); 

    2.对于trade/debug/info级别的日志输出,必须使用条件输出形式或者使用占位符的方式。以后所有的日志输出统一使用占位符的形式。

    3.异常信息应该包括2类:案发现场信息异常堆栈信息。

        例:logger.error(各类参数或者对象toString + "_" + e.getMessage(), e); 

    4.可以用warn级别日志来记录用户输入参数错误的情况。

  • 相关阅读:
    LeetCode236. 二叉树的最近公共祖先
    LeetCode235. 二叉搜索树的最近公共祖先
    LeetCode第32场双周赛
    .NET+Vue 使用SignalR推送数据
    Asp.Net Core使用MongoDB
    CentOS8 部署SqlServer
    windows 任何软件出现异常有日志 w3wp.exe [10608]中发生了未处理的Microsoft .Net Framework异常
    C# Socket使用以及DotNetty和Supersocket 框架
    C# 数据结构与算法 操作系统原理 计算机网络原理 数据库开发学习
    DotNet .Net Framework与Net Core与Net Standard 以及.NET5
  • 原文地址:https://www.cnblogs.com/baokang/p/6348017.html
Copyright © 2011-2022 走看看