给JAVA设计开发新手的一些建议和意见(2)(2)
这样写的话,就截获了所有异常,当然也包括了RunTimeException。 在很多情况下,这是不合适的处理方式,我们只应截获必要的异常,而应该忽略RuntimeException。 关于RunTimeException,在Spring中还有更好的利用方式,建议阅读Spring框架中在事务中对异常的处理代码,例如对Jdbc抛出的SqlException的转换。 关于异常处理,我提出几点建议: *捕获异常而且再次抛出时要包含原来的异常信息 *不要忘了RunTimeException,除非必要,否则不要用catch(Exception e)的方式捕获所有异常。 *不要用异常做流程控制,异常的性能代价比较高昂。(对此,可能有人不同意。此处不详细讨论) *不要把异常处理都抛给别人,本函数有能力处理的就不要抛出。 在此建议读者详细阅读或者。 【过度依赖】 在定位错误的时候,经常遇到浏览了七 八个文件还是没有找到什么地方执行了真正需要的函数,这个时候就非常郁闷。A调用了B,B调用了C,C调用了D。。。。。。让人找不到北 面对这样的程序,存在的问题不仅仅是定位错误麻烦,而且如果需要维护这样的函数库/框架,恐怕你的有非常高的统御能力才行,否则打死我也不去维护。 那么我们自己最好不要写这样的程序出来给人用。 【滥用接口】 现在流行"面对接口编程",这本身本来是不错,但是滥用接口的现象却经常发生。 "面向接口",于是所有的类都有一个对应的接口,接口的函数声明和类一模一样,而且一个接口只有一个类来实现它。这样的面向接口有什么意义哪? (为了用Spring的事务的情况除外) 根据"迪比特法则(Law of Demter)",一个对象应当对其他对象有尽可能少的了解。一个接口内应该只定义对方所需要的方法,而不要把一些没用的方法声明放在接口里面。 例如如下一个类: public class MyCounter { private int n1; private int n2; public MyCounter(int n1,int n2) { this。n1=n1; this。n2=n2; } public void setN1(int n1) { return this。n1 = n1; } public void setN2(int n2) { return this。n2 = n2; } public int getN1() { return n1; } public int getN2() { return n2; } public int getResult() { return n1 + n2; } }
首页 上页 | 1 | 2 | 3 | 下页 尾页 共 3 页