一.不要过度使用 异常
不可否认,Java的异常机制确实方便,但滥用异常机制也会带来一些负面影响。过度使用异常主要有两个方面。
1.把异常和普通错误混淆在一起,不再编写任何错误处理代码,而是以简单地抛出异常来代替所有的错误处理。
2.使用异常处理来代替流程控制。
异常处理机制的初衷是将不可预期异常的处理代码和正常的业务逻辑处理代码分离,因此绝不要使用异常处理来代替正常的业务逻辑判断。
二:不要使用过于庞大的try块
三:避免使用Catch All语句
所谓Catch All 语句指的是一种异常捕捉模块,它可以处理程序发生的所有可能异常。如:
所有的异常都采用相同的处理方式,这将导致无法对不同的异常情况处理,如果要分情况处理,则需要在catch块中使用分支语句进行控制,这是得不偿失的做法。
这种捕获方式可能将程序中的错误、Runtime异常等可能导致程序终止的情况全部捕获到,从而压制了异常。如果出现了一些关键异常,那么此异常也会被静悄悄地忽略。
四:不要忽略捕获到的异常
既然已经捕获到异常,那catch块,那catch块理应做些有用的事情--处理并修复这个错误。catch块整个为空,或者仅仅打印出错信息都是不妥的!
不可否认,Java的异常机制确实方便,但滥用异常机制也会带来一些负面影响。过度使用异常主要有两个方面。
1.把异常和普通错误混淆在一起,不再编写任何错误处理代码,而是以简单地抛出异常来代替所有的错误处理。
2.使用异常处理来代替流程控制。
异常处理机制的初衷是将不可预期异常的处理代码和正常的业务逻辑处理代码分离,因此绝不要使用异常处理来代替正常的业务逻辑判断。
异常机制的效率比正常的流程控制效率差,所以不要使用异常处理来代替正常的程序流程控制。例如,对于如下代码:
//定义一个字符串数组
String [] arr = {"Hello","Java","Spring"};
//使用异常处理来遍历arr数组的每个元素
try
{
int i=0;
while(true)
{
System.out.println(arr[i+1]);
}
}
catch(ArrayIndexOutOfBoundsException ae)
{
}运行上面的程序确实可以实现遍历arr数组元素的功能,但这种写法可读性较差,而且运行效率也不高。程序完全有能力避免产生ArrayIndexOutOfBoundsException异常,程序”故意“制造这种异常,然后使用catch块去捕捉该异常,这是不应该的。将程序改为如下形式肯定要好得多:
String []arr ={"Hello","Java","Spring"};
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}异常只应该用于处理非正常的请况,不要使用异常处理来代替正常的流程控制,对于一些完全可预知。二:不要使用过于庞大的try块
三:避免使用Catch All语句
所谓Catch All 语句指的是一种异常捕捉模块,它可以处理程序发生的所有可能异常。如:
try
{
//可能引发Checked异常的代码
}
catch(Throwable t)
{
t.printStackTrace();
}不可否认,每个程序员都曾经用过这种异常方式:但在编写关键程序时就应避免使用这种异常处理方式。这种处理方式有如下两点不足之处:所有的异常都采用相同的处理方式,这将导致无法对不同的异常情况处理,如果要分情况处理,则需要在catch块中使用分支语句进行控制,这是得不偿失的做法。
这种捕获方式可能将程序中的错误、Runtime异常等可能导致程序终止的情况全部捕获到,从而压制了异常。如果出现了一些关键异常,那么此异常也会被静悄悄地忽略。
四:不要忽略捕获到的异常
既然已经捕获到异常,那catch块,那catch块理应做些有用的事情--处理并修复这个错误。catch块整个为空,或者仅仅打印出错信息都是不妥的!

587

被折叠的 条评论
为什么被折叠?



