返璞归真·读书·【Effictive java】之异常

2020-04-27 10:20:25 浏览数 (1)

功夫之道,无招胜有招。开发之道,基础要牢。然而做开发的时间越久,越是发现一些基础知识的巧妙与必然,很多三年五年的coder有时候都不见得能搞明白一些基础的东西,因为平时开发压根不会用到,只需要会使用框架,可以CRUD就好了。但是拼到最后,问题一定可以在基础知识上找到答案,不能不得不赞叹语言设计者的智慧。

本文主要抛砖引玉,throw 一些 exception,希望大家可以catch后做出自己的业务处理

一、只针对该使用异常的情况下才使用异常

示例(参考Effictive Java 第九章)

代码语言:javascript复制
try{   int i = 0;    while(true){    range[i  ].climb();   }} catch(ArrayIndexOutOfBoundsException e){}

正确做法

代码语言:javascript复制
for (Mountain m:range){  m.climb();}

只在有需要的地方抛出异常,不要通过异常来决定正确的业务逻辑。

二、不要忽略异常

通常我们为了方便,会将整个方法体放入try catch。真的是撸代码时候爽的飞起,万一真的进入catch会有想死的感觉啊。

  1. 整个方法方法捕获异常会非常降低效率,可以写一个循环尝试一下
  2. 整个方法体万一抛出一个NullPointException,再加上一般这么写的代码都会太“优美”,无法排查跟踪错误
  3. 更有甚者,请看下面代码
代码语言:javascript复制
try {  // your code begin   ··· // your code end}catch (Exception e){// Do nothing}

catch中什么也没做,没有任何处理,并且所有的Exception都被捕获了,然后····没有然后了。异常捕获之后一定要做自己的业务处理或者声明自定义异常。

代码质量,取决于后来维护人每分钟骂娘次数,共勉!

0 人点赞