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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© joure 高级黑马   /  2013-11-28 20:48  /  1399 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕老师讲课时说:无论是error,还是异常,问题发生就应该可以抛出,让调用者知道并处理。

但是,Error是一般不可处理的错误,能抛出吗?抛出有什么意义呢?能否举例说明一下

另外能否简单举例说一下Exception 和 RuntimeException 类型的异常

额。。问题有点多,不胜感激!

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 很好的提问。。

查看全部评分

3 个回复

倒序浏览
能抛,因为继承了Throwable,这个类下边的子类都具有可抛性。抛出没什么意义吧。就像内存溢出,那是你代码的问题,只要你改对了,下次就不会有这个问题了。不许要抛出了。

其实java中,自己学得少,就是会在IO和反射那块会有各种异常(真实项目中的异常处理很多),就是普通的异常,这种异常是需要在函数上声明,并且调用者需要进行处理的。runtimeException是运行时异常,就是你运行程序的时候会出现的异常,这类异常不需要在函数上声明,调用者处理或者处理都可以吧(这句话有待考究,记不清了)比如数组角标越界异常。

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 谢谢你的回答

查看全部评分

回复 使用道具 举报
ysunday 发表于 2013-11-28 21:02
能抛,因为继承了Throwable,这个类下边的子类都具有可抛性。抛出没什么意义吧。就像内存溢出,那是你代码 ...

error是没有什么积极意义,要尽量避免
RuntimeException不需要声明直接可以抛出或者处理

非运行时异常是不是必须在函数上声明,否则编译不通过?catch时需要声明吗?

学习异常体系的主要目的就是为了使用自定义的方法处理异常,可以这么理解吗?

回复 使用道具 举报
joure 发表于 2013-11-28 21:17
error是没有什么积极意义,要尽量避免
RuntimeException不需要声明直接可以抛出或者处理

是的,非运行时异常是需要声明的。自定义异常是为了更好的描述异常。就是为了处理异常的。
catch了就是处理了这个异常,不需要声明了,除非你这么写
catch(Excption e){
    throw new Exception("haha");
}

要是在catch里边抛出了新异常 也是要声明的

评分

参与人数 1黑马币 +3 收起 理由
joure + 3 弄清楚了,非常感谢你的回答!!!.

查看全部评分

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