Java 用 try-catch 代替 if-else 的好处

例子:
if-else:业务逻辑通过null表示失败

//call methodA()
if(result!=null){
    // do A
} else(){
    // do B
}
// do C

try-catch:业务逻辑通过自定义异常表示失败

try{
    //call methodA()
    // do A
}catch(ExceptionMethodA ex){
    // do B
}
// do C

优点:
1. 因为业务异常不printStackTrace()因此性能和if-else是类似的
2. 业务更集中,避免了在if语句中判断null
3. 把错误信息作为自定义业务异常的errorMessage传递,和if-else在多个被调用处写日志相比,仅仅在调用处写一次日志文件。写日志属于I/O也会影响系统性能,越少越好。

缺点:
有时需要把数据库,文件,网络的Exception的信息写入自定义业务异常的errorMessage中,不然必须要给一个返回值

解决: 通过java值传递机制,把返回对象作为参数传入被调用方法中,调用者通过返回对象的属性获得返回值。这样,数据库,文件,网络的Exception直接写日志,不用抛出。

void methodA(ReturnObject foo){
    String returnValue="";
    // ...
    foo.returnValue=returnValue;
}

void main(){
    ReturnObject foo = new ReturnObject();
    methodA(foo);
    System.out.println(foo.returnValue);
}

你可能感兴趣的:(java,异常)