楼主问的是否是抛出一个异常好,还是用err_code来代表这个异常好? 比如NumberFormatException在你的某个方法里面对应的可能是你的某个异常code: public static final int ERR_ID_VALUE = 100; 只要这个方法返回100,你就知道是方法的参数ID传入的是个不能转为数字的字符。本人觉得,除非业务逻辑要求你必须处理所有的异常不能抛出异常,即方法后面不能带 throws,否则,最好还是抛出异常。这样对于定位错误(特别是一些底层包)是有好处的。而且作为coding的人来说,看异常比对照那个异常代码表来找是什么意思,可能更习惯,也能更快定位错误。
异常,顾名思义,是程序产生了不可预期的错误。它应该不属于你的程序逻辑要处理的事情。 打个最简单的比方,你有一个如下的方法: public int add(int x, int y){ if(y > Integer.MAX_VALUE - x ){ throw new IllegalArgumentException(); } return x + y; } 这个方法计算x与y的和,并返回。谁都能看懂。 如果x+y的值溢出了的话,抛出一个错误参数的异常。 用boolean代替异常的话,你觉得这个方法的返回值应该如何定义呢?另外,一个boolean又如何将异常发生时候的具体信息带回给主控程序呢?
比如NumberFormatException在你的某个方法里面对应的可能是你的某个异常code:
public static final int ERR_ID_VALUE = 100;
只要这个方法返回100,你就知道是方法的参数ID传入的是个不能转为数字的字符。本人觉得,除非业务逻辑要求你必须处理所有的异常不能抛出异常,即方法后面不能带 throws,否则,最好还是抛出异常。这样对于定位错误(特别是一些底层包)是有好处的。而且作为coding的人来说,看异常比对照那个异常代码表来找是什么意思,可能更习惯,也能更快定位错误。
不知道楼主是不是这个意思?
打个最简单的比方,你有一个如下的方法:
public int add(int x, int y){
if(y > Integer.MAX_VALUE - x ){
throw new IllegalArgumentException();
}
return x + y;
}
这个方法计算x与y的和,并返回。谁都能看懂。
如果x+y的值溢出了的话,抛出一个错误参数的异常。
用boolean代替异常的话,你觉得这个方法的返回值应该如何定义呢?另外,一个boolean又如何将异常发生时候的具体信息带回给主控程序呢?
某些时候异常是无可替代的。因为Java不允许方法返回与其声明中的类型不相容的值,就像楼上的例子中那样,方法声明返回int,你是不能返回boolean的,编译器不会让你编译,这个时候只能采取异常策略。