异常日志
异常处理
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 异常日志的更多相关文章
-
JUC学习笔记--从阿里Java开发手册学习线程池的正确创建方法
前言 最近看阿里的 Java开发手册,上面有线程池的一个建议: [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式, 这样的处理方式让写的同学 ...
-
从阿里Java开发手册学习线程池的正确创建方法
前言 最近看阿里的 Java开发手册,上面有线程池的一个建议: [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更 ...
-
【转】线程池体系介绍及从阿里Java开发手册学习线程池的正确创建方法
jdk1.7中java.util.concurrent.Executor线程池体系介绍 java.util.concurrent.Executor : 负责线程的使用与调度的根接口 |–Execut ...
-
阿里 JAVA 开发手册 学习 4 工程规约
应用分层 1.分层如下 1)开放接口层:可以直接封装Service接口暴露成RPC:通过web封装成http接口:网关控制层等. 2)终端显示层:各个端的模板渲染并执行显示层. 3)Web层:主要是度 ...
-
阿里Java开发手册学习 3 MYSQL规约
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
-
阿里JAVA开发手册零度的思考理解(一)
转载请注明原创出处,谢谢! 缘由 阿里JAVA开发手册已经发表有很长时间了,值得认真研究思考推广 阿里官方的Java代码规范标准,这份开发手册不仅规范了一些开发细节,也提出了很多工程开发的哲学,值得好 ...
-
阿里JAVA开发手册零度的思考理解(二)
转载请注明原创出处,谢谢! 说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流-- 上篇文章:阿里JAV ...
-
品阿里 Java 开发手册有感
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 一个优秀的工程师和一个普通的工程师的区别,不是满天飞的架构图, ...
-
阿里java开发规范学习(附P3C IDEA插件 帮助规范的养成)
浅析 阿里巴巴 Java 开发规约 (未完成) 更加优秀的页面展现请到浅析 阿里巴巴 Java 开发规约 contents 为什么要学 编程规约 P3C IDEA 插件 why-use 我们知道,一般 ...
随机推荐
-
1. Swift基本变量|运算符|控制流
Swift基于cocoa Touch框架,苹果官方为了保证Swift的可靠性,结合多种语言的特性,同时独立了一套属于自己的单独语言,结合了C,C++,OC,Java等语言. 基本变量: 1 . swi ...
-
HDU 3951 (博弈) Coin Game
先考虑两种简单的情况: 如果先手能一次把硬币拿完,即 k >= n ,那么先手胜 如果每次只能拿一个硬币, 即 k = 1 ,那么如果有奇数个硬币先手胜,如果有偶数个硬币后手胜. 剩下的情况就是 ...
-
Specular light 计算
Specular lighting is most commonly used to give light reflection off of metallic surfaces such as mi ...
-
HashMap两种类型
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("d", 2); ma ...
-
Android MediaPlayer 和 NativePlayer 播放格式控制
对于本机MediaPlayer 支持格型式试验: 对于原生 NativeMedia 的支持格式測试: 这个支持就比較失望了,眼下測试的手机仅仅支持 H.264视频及AAC音频,其他的格式都不支持. 使 ...
-
Linux 最小系统制作
Linux 最小系统制作 一.制作工具Busybox 在制作文件系统的时候,我们需要使用“Busybox 工具”,即为附件压缩包“busybox-1.21.1.tar.bz2”.“BusyBox 工具 ...
-
Attempting to badge the application icon but haven&#39;t received permission from the user to badge the application错误解决办法
今天刚刚学习UIApplication对象,当我希望利用这个对象在我们的应用图标上显示个数字的时候,xcode报了这个错误: 解决办法 : - (IBAction)applicationClicke ...
-
Linux关机&;重启命令
⒈shutdown ①shutdown -h now 立即关机 ②shutdown -h 1 1分钟后关机 ③shutdown -r now 立即重启 ⒉halt 立即关机 ⒊reboot 立即重启 ...
-
【JVM】1、java虚拟机参数-X 与 -XX的区别
Options that begin with -X are non-standard (not guaranteed to be supported on all VM implementation ...
-
Python GIL 系列之再谈Python的GIL
1. 之前写过一篇<通过实例认识Python的GIL>的文章,感觉有些意犹未尽 2. 这次对例子作了些扩展,进一步的分析GIL对Python程序的影响 2.1 先来看例子: [python ...