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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 chen20134 于 2014-3-10 20:41 编辑

try、catch、finally分别在什么情况下使用?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1 看你也不容易,先给你一分!!!.

查看全部评分

5 个回复

正序浏览
总共有三种模式
1.try和catch模式这是常规模式:try{ 写入会出现异常的代码 }catch(异常类型 e){ 处理异常 }
2.try和catch,finally类型其中finally里面存放的是一定会执行的语句。
3.try和finally类型(不常见)没有处理异常。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
异常的捕获和处理
try{
//可能抛出异常的语句
}catch(  Exception e)
{
........
//getMessage()获得异常事件的信息
//printlnStackTrace()用来跟踪异常事件发生时执行
}finally{
//无论是否发生异常都执行
//可以进行资源清除工作如:关闭,删除。。。。。。
.......
}

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
try catch 一般在需要处理异常信息时使用,也就是说处理非系统级异常时,他不会导致软件运行崩溃,而是人为的问题,比如说传入的参数不匹配等等,就会需要try catch来处理这些异常信息。
而finally则不管是什么异常,这个finally中的代码都会运行,多线程、IO、数据库连接用的会比较多,因为他们在操作完毕后需要释放锁、关闭流、关闭数据库连接等操作。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
throws捕获并向外抛出异常
throw抛出异常
try catch内部捕获异常并做自定义处理
finally无论否有异常都会被处理语句除非finally前存被执行System.exit(int i)时除外
共同点:
1.在catch块和finally块中仍然可以再抛出新的异常
例如 throw new Exception("illegal invoked");
如果对于新抛出的异常没有写try的话,则要在方法后面声明抛出异常
反之,如果给catch块或finally块里的异常再套上一层try,catch的话,方法后面就不必声明异常了。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
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技术分 +1 收起 理由
何伟超 + 1

查看全部评分

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