黑马程序员技术交流社区

标题: 异常处理问题 [打印本页]

作者: 冯鹏飞    时间: 2011-7-28 13:08
标题: 异常处理问题
在多个try-catch有时会加上finally,finally和它们有什么关系?内部具体是如何执行的?finally在这里有特殊的作用吗?
作者: 匿名    时间: 2011-7-28 13:48
标题: 回复 楼主 的帖子
finally里的代码是最后都会处理,参与执行的,一般会把释放资源的一些操作代码放到里面。一般程序有故障了会终止不在进行,但遇到finally后是必须执行完finally中的代码后才可以终止运行,报告异常的。
作者: 匿名    时间: 2011-7-28 14:10
try语句块中无论是否遇到异常,finally子句中的代码都会被执行,一般起到回收资源的作用。
作者: 匿名    时间: 2011-7-28 14:21
标题: 回复 楼主 的帖子
无论异常是否被抛出,finally里面的代码是必须执行的。可以是程序员保证:无论try块里发生了什么,内存总能被释放。
当要把除内存之外的资源恢复到他们的初始状态时,就要用到finally字句。[code]//finally字句总是执行
class TreeException extends Exception {}
public class FinallyWorks{
        static int count = 0;
        public static void main(String[] args)
        {
                while(true)
                {
                        try {
                                if(count++ == 0)
                                  throw new TreeException();
                                System.out.println("No Exception");
                                }
                        catch(TreeException e){
                                System.out.println("TreeException");
                                }
                        finally {
                                System.out.println("In finally clause");
                                if(count == 2) break;// 跳出while
                                }
                        }
                }
        }[/code]
作者: 匿名    时间: 2011-7-28 22:05
finally语句都放在最后,是必执行的语句,一般用于报考一些信息。
作者: 匿名    时间: 2011-7-28 22:56
标题: 回复
finally是必须要执行的,无论你有没有异常,但如果在finally之前已经发生return xxx你就不用执行finally的操作了
作者: 匿名    时间: 2011-7-29 00:11
标题: 回复 板凳 的帖子
谢谢你的详细解答,明白了…
作者: 匿名    时间: 2011-7-29 14:38
标题: Finally解答
所谓Finally,就是无论你成功或是失败, 跟我没关系,我就是要执行我的,你走你的路,我过我的桥,谁不影响谁,但是无论前面是死是活,我都要走.我很执着的!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2