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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Friends★ 中级黑马   /  2012-4-26 12:10  /  2570 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学习异常的时候有几个问题不太明白。     
1、对了处理不了的异常,抛出去过后最终是虚拟机在处理吗?  如果是虚拟机处理的话,一般默认的处理方式是什么?            
2、对于异常的处理,不是try就是抛,那么抛出去过后自己还能try处理吗?
3、抛和try能同时存在啊?(我的理解是抛了就说明处理不了,所以就没有必要再try,而try了,进相当于已经处理了,那就没有必要再抛了,所以抛和try一般不同时存在,我这样理解可以吗?)
                请各位大虾帮我澄清一下这个模糊的概念??谢谢了!!

4 个回复

倒序浏览
本帖最后由 贾联国 于 2012-4-26 15:51 编辑

1.没有异常就运行。 处理不了的异常,虚拟机在运行的时候就会给你显示异常,但这不便于分析原因.。
2 抛出去之后,自己调用的时候可以进行try,catch。最终try了之后catch内可以写抛,一般都是Runtimeexception或其子类
3 我也是这么理解的

回复 使用道具 举报
第一是虚拟机处理,若有代码抛出异常则其后语句不在执行并在退出该方法后回收所占资源,
第二和第三,认为try和抛可以同时存在,因为对于处理不了的问题会抛,在try,catch中处理的是可捕捉的,那如果一个类里有可以捕捉的异常有不能捕捉的异常那不就只能抛了吗..
个人理解若有不对请指证.
回复 使用道具 举报
学习异常的时候有几个问题不太明白。     
1、对了处理不了的异常,抛出去过后最终是虚拟机在处理吗?  如果是虚拟机处理的话,一般默认的处理方式是什么?            
2、对于异常的处理,不是try就是抛,那么抛出去过后自己还能try处理吗?
3、抛和try能同时存在啊?(我的理解是抛了就说明处理不了,所以就没有必要再try,而try了,进相当于已经处理了,那就没有必要再抛了,所以抛和try一般不同时存在,我这样理解可以吗?)
                 请各位大虾帮我澄清一下这个模糊的概念??谢谢了!!

1、你如果一直往外抛,最终虚拟机来处理,在过程中不管哪个步骤都可以捕获来处理而不往外抛,虚拟机处理也是调用try..catch语句;
2、这里自己指的是抛出异常的方法吗?可以边抛边处理的,只要处理和抛的异常不同,
3、这问题第2点就回答了,是可以的。
扩展点:throws是申明异常,后面跟的是异常类名;throw是抛出异常,后面跟的是异常对象;throws申明的异常就会中断程序执行;try  catch处理的异常程序可以往下走;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马