黑马程序员技术交流社区

标题: 自定义异常中继承Throwable和继承Exception有什么区别? [打印本页]

作者: as604049322    时间: 2014-12-21 22:37
标题: 自定义异常中继承Throwable和继承Exception有什么区别?
我怎么感觉没区别,都可以进行抛出啊?

作者: 还在路上    时间: 2014-12-21 22:56
抛本类和父类的区别,如果有多个该类型就异常直接抛父类的比较好,不用重复抛出
作者: 有陷阱快跑丶    时间: 2014-12-22 22:32
继承Exception可以使用Exception中的特有方法
作者: as604049322    时间: 2014-12-23 08:52
有陷阱快跑丶 发表于 2014-12-22 22:32
继承Exception可以使用Exception中的特有方法

Exception没有一个特有方法,都是继承Throwable的方法
作者: duluhua    时间: 2014-12-23 09:12
Throwable是所有错误或异常的超类,其下有Exception和Error两个类,也就是说Throwable是Exception和Error的父类。
而Exception和Error是有区别的:
Exception:是可以通过代码进行处理的异常。
Error:是错误,通常是不可能通过代码进行处理的异常。是错误,并且是会导致程序崩溃的。

所以在抛异常时,应该抛Exception时你抛Throwable肯定是没问题的,关键在于细节,对于异常应该是尽可能去抛详细准确的异常,根据异常可以知道到底是什么位置出了问题。
打个比喻:
我数组角标越界了,你是不是应该抛异常,两种情景:
-----1.我抛数组角标越界异常,那么我会很清楚的知道是数组角标越界了。
------2.我抛数组角标越界异常的父类的父类的父类。。。也就是Throwable,那么我会清楚的知道是Java异常,但是到底是哪儿的异常,就真的说不出来了。

再举个实际的例子:问你是哪儿的人?
1.我是xx省xx市xx县xx村的人。
2.我住地球上。
你认为哪个答案更贴切?
作者: as604049322    时间: 2014-12-23 11:15
duluhua 发表于 2014-12-23 09:12
Throwable是所有错误或异常的超类,其下有Exception和Error两个类,也就是说Throwable是Exception和Error的 ...

你的意思我懂了。。。但我说的是自定义异常,我把名字命名为FushuException但是让它继承的是Throwable,再抛出去,同样也能够知道,是什么异常。。。在这点上,其实没什么区别。。。
作者: duluhua    时间: 2014-12-23 15:05
学习了,原来还能这样。
不过的话,自定义异常继承Throwable,会含有Error的特性
如果是继承Exception的话,那么该自定义异常就是属于Exception的,不再包含Error的特性。
这么理解也没错吧




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