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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© winsking 中级黑马   /  2013-9-28 16:28  /  1674 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 winsking 于 2013-9-29 18:20 编辑

最近写代码时,在IO异常处理这里不是很清楚。因为看毕老师的视频,老毕都是在方法上抛出的。
用哪些类可以在方法上抛出?  什么时候要try 呢
键盘输入的代码需不需要try?
这一块很是迷惑

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
毕老师的视频异常处理基本都是抛(在方法上throws),目的是为了代码更加紧凑,方便教学。很多时候老师在主函数上抛,是把异常传递给虚拟机去处理了。

而在实际开发当中,一般在定义功能的时候才抛,让调用者去进行捕捉处理。在实际调用方法的时候,都是用try,catch来进行捕捉的

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
异常就如同我们人感冒一样,可以看医生(try)来进行捕获(catch),也可以自己坚持一下就过去了(throws),将异常交由身体免疫机制(JVM)来解决。
所以到底是try还是throws主要由我们程序员来决定,看看怎么样选择对程序有好处。
毕老师平时的授课之所以直接throws,大部分是为了节省时间,方便于教学和代码阅读。

我们常用的Exception体系中包括RuntimeException和非RuntimeException两大块。
其中RuntimeException包括错误的类型转换、数组越界访问和试图访问空指针等等。
如果程序中可能出现此类异常的话,这些都是我们程序本身的错误,可以进行抛出,
然后我们作进一步修改。

其他非RuntimeException(IOException等等):这类异常一般是外部错误,
例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。
如我们看视频时经常会出现此类异常,这类异常一般是要捕获的。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

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