阿里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级别日志来记录用户输入参数错误的情况。
阿里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开发手册记录
概述 在阅读完阿里Java开发手册(嵩山版)后,发现自己在开发过程中有一些没有按照规范开发的情况,这里将容易忘记的规范记录下来,并且添加自己的理解,一方面方便自己巩固记忆,另一方面希望对其他同学能够提 ...
- 阿里JAVA开发手册零度的思考理解(二)
转载请注明原创出处,谢谢! 说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流-- 上篇文章:阿里JAV ...
- 品阿里 Java 开发手册有感
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 一个优秀的工程师和一个普通的工程师的区别,不是满天飞的架构图, ...
随机推荐
- android 笔记(Service)
Service 一.Serivce的启动方式分两种 1.startService.用这种方式启动的话,负责启动这个service的Activity或者其他组件即使被销毁了,Service也会继续在后台 ...
- js 去掉以逗号分割的字符串中头尾和中间多余的逗号
let permission = ",,,106,105,108,,,109,110,107,,101,,," let permission = "106,105,108 ...
- 一分钟学会Spring Boot多环境配置切换
一. 问题由来 开发环境.测试环境.生产环境--------我们的软件在不同的环境中,系统参数和配置可能会不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置,那每次我们将软件部署到 ...
- java retry:详解
发现 今天在探秘线程池原理知识点,在阅读JDK源码时遇到程序代码中出现如下代码,因为之前没有遇到过,于是特地记录下来并谷歌了一番,后面我自己做了一些简要的验证和分析. 验证 网上溜达一番发现,这ret ...
- GeoServer配置CORS(跨域资源共享)
当前台页面请求WMS可能会遇到浏览器以下提示(浏览器控制台): 已阻止跨源请求:同源策略禁止读取位于 http://xxx.xxx.com 的远程资源.(原因:CORS 头缺少 'Access-Con ...
- 谈Objective-C block的实现(转)
前言 这里有关于block的5道测试题,建议你阅读本文之前先做一下测试. 先介绍一下什么是闭包.在wikipedia上,闭包的定义)是: In programming languages, a clo ...
- Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?
I see pretty much all the answers recommend deleting the lock. I don't recommend doing that as a fir ...
- linux mysql-server can't find mysql_config
linux mysql-server can't find mysql_config Ask Question up vote7down votefavorite 3 I have a running ...
- iOS经常使用设计模式——单例模式
第一部分: 创建一个单例对象 单例的应用场景: 单例模式用于当一个类仅仅能有一个实例的时候. 通常情况下这个"单例"代表的是某一个物理设备比方打印机,或是某种不能够有多个实例同一时 ...
- 需要配置执行path?no
下面的代码以管理员权限运行即可,保存为bat 2018/2/6(basic) - 初始化版本 @echo off :continue echo 输入exit退出 set /p My_PATH=请输入要 ...