阿里巴巴Java开发手册———个人追加的见解和补充(二)
前言
如果你没有看过之前的(一)或者没有下载这份手册的话,下面有链接,还是对照手册食用毕竟好
http://www.cnblogs.com/linkstar/p/6413402.html
该说的我觉得(一)里面我都说完了,那么就直接进入正题吧。
异常日志
对于异常的处理,很多时候对于我们来说是很偷懒的,不是吗?
我见过太多的就是打印出异常的日志,或者是连日志都不写,直接控制台输出一下就啥也没有了。更有甚者直接把所有异常往外抛的。还有就是直接try-catch所有的代码,“信誓旦旦”的认为所有的异常我都捕获了,你总不能再出问题了吧。
对于这些。。。我送一句话,不去处理的异常就是错误。
异常捕获之所以存在,是因为java希望,即使突然出现异常,有效的处理,让这个问题不会影响到整个应用的运行,从而提高程序的稳定性,也会提醒程序员发现和解决问题。
异常处理
首先给一下在java中异常的分类,大多数我们都应该遇到过,有些可能没遇到过,了解他们的关系。
3、这就是我在前面所说的,有的同学偷懒,就捕获全部的异常。其实我们要做的其实很简单,对于不稳定的代码进行捕获他有可能出现的异常,做相应的异常处理,现在的IDE都很智能,都会提示哪里会出现什么样的异常,对于我们来说已经很方便了。
4、将异常处理为可以和用户或者说是使用者可以理解的错误。我要补充的是:但是要和原有的错误进行区分。比如登录功能,我只是做个假设嘛,如果真的出现异常,你看看你捕获的是什么异常,不能都只是提示用户“用户名密码错误。”,那用户鬼知道是你服务器的bug导致登录失败,等再去看日志已经晚了,例子可能不是很恰当,但差不多是这个意思。
6、我补充一下 try-with-resources 语句,这个是JDK7的特性。我原来也不知道,也是看了手册才知道有这个东西。会考虑使用。
第一、 try-with-resources 会自动关闭资源。
第二、关闭顺序和打开顺序相反。
第三、还是可以使用catch和finally但是,catch和finally会在资源关闭后才运行。
我这边给出简单的语法形式
try(资源的打开){
资源的使用
}catch{
}
具体参考官方文档:
http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
9、返回值能为null就为null,我之前看到有书中写到“如果一个团队在写代码的时候,遇到List的时候,永远不返回null如果没有数据就返回一个size为0的List,但是不是null,这样大家都不需要对List判空,只需要判断大小即可,否则对于一个List不仅需要判空也需要判断大小。”但是我在实际中发现,有的时候null作为一个识别是很好的,就像手册中说的,我们只需要在接口上面明确给出,什么样的情况之下会返回null,什么样的情况下不会即可,让使用者去判断,我觉得这样在实际中这个识别还是很有用的,毕竟NPE大家都不希望的,不判断心里不安心。
13、在后期优化的时候,抽取公共方法很重要,后期修改如果不是公共的话,有可能出现,有的这边改了,那边是类似或者相同的方法,但是却没改的情况就很尴尬。
日志规约
1、第一条就把我吓了个半死,本人使用的是Log4j,确实有依赖,但是确实这条说的没错,但是可能这对与项目大的情况下比较重要,现在对于我来说并不准备换,可能之后会作考虑。
后面几条我总结个人一起说一下,首先日志的打印我们这边的规矩是这样的。
一、日志描述必须清楚,when?where?who?what?什么时候,这个倒是log4j会有,where就是那里发生的错误,案发地点在哪里,who就是谁出现的这个错误,what就是出现的是什么错误。这些明确,一般这个错误定位就简单了。
二、日志必须进行级别分类,不能一股脑全部debug也不能全部error。
三、不必要的日志不写,不能浪费磁盘资源,不能导致日志繁重让别的错误找起来麻烦。
四、如果有专人,那么专人会去查看,否则自己必须去在测试时查看自己的日志是否出现问题,有问题立即处理解决。
我这边也学到了一些,一个是日志的分类其实很重要,对于定位错误问题很重要,否则对着那么长的日志谁看的都烦心,日志存放的时间,我们之前好像都是永久存放的。。。有人固定去删除。可能15天这个时间比较有参考价值。
在日志上面除了以上的几点要注意的之外,还需要注意的是,不要只看项目的日志,有时一些容器本身产生的日志也大的可怕,比如经常使用的tomcat,它本身就会产生很多的日志文件,对于服务器也会占用资源,所以也要进行处理。网上搜索如何关闭tomcat的日志文件打印即可。
总结
这里是对于那些像我一样的年轻的程序员说的,不要害怕去看异常和日志,很多人看到一大堆英文就害怕,其实都是纸老虎,看明白了之后慢慢你就不怕看了。
一开始的时候我也害怕看它,也看不懂,渐渐的就学会了,慢慢就喜欢上了。
因为你能从错误中汲取教训而且积累了很多的经验,说实话,失败的经验或许比成功的经验更多更重要,不是吗?