异常日志

异常处理

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级别日志来记录用户输入参数错误的情况。

阿里Java开发手册学习 2 异常日志的更多相关文章

  1. JUC学习笔记--从阿里Java开发手册学习线程池的正确创建方法

    前言 最近看阿里的 Java开发手册,上面有线程池的一个建议: [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式, 这样的处理方式让写的同学 ...

  2. 从阿里Java开发手册学习线程池的正确创建方法

    前言 最近看阿里的 Java开发手册,上面有线程池的一个建议: [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更 ...

  3. 【转】线程池体系介绍及从阿里Java开发手册学习线程池的正确创建方法

    jdk1.7中java.util.concurrent.Executor线程池体系介绍 java.util.concurrent.Executor : 负责线程的使用与调度的根接口  |–Execut ...

  4. 阿里 JAVA 开发手册 学习 4 工程规约

    应用分层 1.分层如下 1)开放接口层:可以直接封装Service接口暴露成RPC:通过web封装成http接口:网关控制层等. 2)终端显示层:各个端的模板渲染并执行显示层. 3)Web层:主要是度 ...

  5. 阿里Java开发手册学习 3 MYSQL规约

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  6. 阿里JAVA开发手册零度的思考理解(一)

    转载请注明原创出处,谢谢! 缘由 阿里JAVA开发手册已经发表有很长时间了,值得认真研究思考推广 阿里官方的Java代码规范标准,这份开发手册不仅规范了一些开发细节,也提出了很多工程开发的哲学,值得好 ...

  7. 阅读阿里Java开发手册记录

    概述 在阅读完阿里Java开发手册(嵩山版)后,发现自己在开发过程中有一些没有按照规范开发的情况,这里将容易忘记的规范记录下来,并且添加自己的理解,一方面方便自己巩固记忆,另一方面希望对其他同学能够提 ...

  8. 阿里JAVA开发手册零度的思考理解(二)

    转载请注明原创出处,谢谢! 说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流-- 上篇文章:阿里JAV ...

  9. 品阿里 Java 开发手册有感

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 一个优秀的工程师和一个普通的工程师的区别,不是满天飞的架构图, ...

随机推荐

  1. 标准C程序设计七---76

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  2. linux 时间模块 一

    作者:云天明链接:https://www.zhihu.com/question/50764115/answer/122613742来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  3. EXT.JS6中的model,store,proxy的一些用法

    //one-to-one Ext.define('Address', { extend: 'Ext.data.Model', fields: [ 'address', 'city', 'state', ...

  4. js-利用插件qrcode.min.js,前端实时生成二维码

    qrcode.min.js <script type="text/javascript" src="js/jquery.min.js"></s ...

  5. netframework中等待多个子线程执行完毕并计算执行时间

    本文主要描述在.netframework中(实验环境.netframework版本为4.6.1)提供两种方式等待多个子线程执行完毕. ManualResetEvent 在多线程中,将ManualRes ...

  6. 轻量级Web渗透测试工具jSQL

    轻量级Web渗透测试工具jSQL jSQL是Kali集成的一款轻量级的Web渗透测试工具.最初该工具主要实施SQL注入,后来增加更多的功能,扩展形成一个综合性的Web渗透测试工具.Kali提供的版本较 ...

  7. codeforces 997E(线段树)

    分析: 首先考虑如何计算整个数组有多少个good区间 容易发现一个区间是good区间当且仅当max-min-len=-1,且任意区间max-min-len>=-1 我们可以枚举右端点,然后维护前 ...

  8. SSM框架CRUD小案例

    1.数据库准备 部门tbl_dept 员工tbl_emp 建立员工和部门的外键 2.在IDEA创建SSM项目环境 2.1配置Web模块 最上面的图是错误示范,注意!!! 在Tomcat配置了项目路径, ...

  9. PyTorch学习笔记之计算图

    1. **args, **kwargs的区别 def build_vocab(self, *args, **kwargs): counter = Counter() sources = [] for ...

  10. iOS应用崩溃日志揭秘

    这篇文章还可以在这里找到 英语 Learn how to make sense of crash logs! 本文作者是 Soheil Moayedi Azarpour, 他是一名独立iOS开发者. ...