今天偶然间看别人代码时,发现处理异常时,有try 而没有catch,我一直认为try 和catch是配对用的,所以网上搜了一下异常处理的各种方法。转载一下。
1.try+catch
程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理。然后执行catch块后面的语句
2.try+catch+finally
程序的流程是:运行到try块中,如果有异常抛出,则转到catch块,catch块执行完毕后,执行finally块的代码,再执行finally块后面的代码。
如果没有异常抛出,执行完try块,也要去执行finally块的代码。然后执行finally块后面的语句
3.try+finally
程序的流程是:运行到try块中,如果有异常抛出的话,程序转向执行finally块的代码。那末finally块后面的代码还会被执行吗?不会!因为你没有处理异常,所以遇到异常后,执行完finally后,方法就已抛出异常的方式退出了。
这种方式中要注意的是,由于你没有捕获异常,所以要在方法后面声明抛出异常
共同点:
1.在catch块和finally块中仍然可以再抛出新的异常
例如 throw new Exception("illegal invoked");
如果对于新抛出的异常没有写try的话,则要在方法后面声明抛出异常
反之,如果给catch块或finally块里的异常再套上一层try,catch的话,方法后面就不必声明异常了。
注意点:
每次执行后输出结果的顺序可能都不太相同,这是因为采用不同的流打印的结果,不必太在意
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lovecj6185/archive/2009/08/19/4461516.aspx
我所看到的用法就是第三种。try+ finally