黑马程序员技术交流社区

标题: 关于异常,error是否具有可抛性? [打印本页]

作者: joure    时间: 2013-11-28 20:48
标题: 关于异常,error是否具有可抛性?
毕老师讲课时说:无论是error,还是异常,问题发生就应该可以抛出,让调用者知道并处理。

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

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

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


作者: ysunday    时间: 2013-11-28 21:02
能抛,因为继承了Throwable,这个类下边的子类都具有可抛性。抛出没什么意义吧。就像内存溢出,那是你代码的问题,只要你改对了,下次就不会有这个问题了。不许要抛出了。

其实java中,自己学得少,就是会在IO和反射那块会有各种异常(真实项目中的异常处理很多),就是普通的异常,这种异常是需要在函数上声明,并且调用者需要进行处理的。runtimeException是运行时异常,就是你运行程序的时候会出现的异常,这类异常不需要在函数上声明,调用者处理或者处理都可以吧(这句话有待考究,记不清了)比如数组角标越界异常。
作者: joure    时间: 2013-11-28 21:17
ysunday 发表于 2013-11-28 21:02
能抛,因为继承了Throwable,这个类下边的子类都具有可抛性。抛出没什么意义吧。就像内存溢出,那是你代码 ...

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

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

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


作者: ysunday    时间: 2013-11-28 21:38
joure 发表于 2013-11-28 21:17
error是没有什么积极意义,要尽量避免
RuntimeException不需要声明直接可以抛出或者处理

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2