A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田林 中级黑马   /  2012-5-10 20:08  /  2103 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 田林 于 2012-5-15 19:26 编辑

请问:try{
          }
         finally{
           }
这种格式只能测出有异常的代码块,又不能处理,那它又有什么具体作用呢?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 加油1···

查看全部评分

7 个回复

倒序浏览
这段代码的意思就是说在try中的出现了异常会终止程序但是还是有部分代码希望会继续执行下去所以就有了finally语句块

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
try{}finally{}给我们提供了一个“保证某个动作必然执行”的机会。

一个try-finally结构,只要try块开始执行了,finally块里面的代码保证执行一次并且只有一次。
打个比方,就象你上厕所,只要你一旦开始拉了,我们保证无论如何,是拉稀了也好,放屁了也罢,最终你肯定是擦了屁股走出卫生间。
应用try-finally,我们可以在异常满天飞的程序里保证我们的关键资源被按时正确清理。一个最常见的应用就是jdbc的Connection, Statement, ResultSet等。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 哥们 你要笑翻我

查看全部评分

回复 使用道具 举报
这种用法在实际开发中很常见,希望大家关注。
当发生异常时,这个时候,程序还有事情要处理,这样一来,常常把其要处理的工作交给相应的fianlly{}代码块。
例如,在操作数据库的过程中发生异常时用fianlly代码块来释放资源等。
回复 使用道具 举报
java中finally的作用
结论1:当try里面的代码没有异常的时候,会执行该try块对应的finally块,并继续执行finally之后的代码。

结论2:当try里面的代码出现异常的时候,会执行该try块对应的catch块和finally块,且即使catch中有返回finally也是要执行。也就是先执行完finally中的语句,再返回catch中的return。

结论3:相对于结论2,finally中如果有return的情况,那么即使catch中有return,这个return也不起作用,该方法调用要到finally中的return才返回。

总结:很多人说finally在程序中是一条一定会执行的语句,要他干嘛?这只能说你还没有到使用finally的境界,因为在排错中使用finally能够清晰的找到错误的原因,这是也很多有经验的java程序员必用的功能,不然开发他干嘛?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
try{
  执行语句
}
finally{
  存放必须要执行的语句,不管你前面的语句发发生了什么错误(比如,释放资源)
有种情况,System.exit(0),在finally之前的话,该语句就执行
}
回复 使用道具 举报
因为我们在进行的程序执行的时候,可能会开底层资源,我们用try把可能出异常的代码放在里面
如果代码出现异常,由于我们没有对异常进行处理,所以程序会继续的走下去,这叫做问题隐藏,
程序运行的时间一长,就会出现状况。
正如上面那位老兄说的,数据库资源是非常宝贵的,如果用完不及时关闭,在数据库连接池中的链接会
用光,到时没有空余的链接对数据库进行访问,那么你的程序也就废了。
所以必须把要关闭的资源放在finally中,因为无论怎样,函数在结束时最后走的就是finally代码块。
回复 使用道具 举报
java中finally的作用
结论1:当try里面的代码没有异常的时候,会执行该try块对应的finally块,并继续执行finally之后的代码。

结论2:当try里面的代码出现异常的时候,会执行该try块对应的catch块和finally块,且即使catch中有返回finally也是要执行。也就是先执行完finally中的语句,再返回catch中的return。

结论3:相对于结论2,finally中如果有return的情况,那么即使catch中有return,这个return也不起作用,该方法调用要到finally中的return才返回。

总结:很多人说finally在程序中是一条一定会执行的语句,要他干嘛?这只能说你还没有到使用finally的境界,因为在排错中使用finally能够清晰的找到错误的原因,这是也很多有经验的java程序员必用的功能,不然开发他干嘛?

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马