Throwable是所有错误或异常的超类,其下有Exception和Error两个类,也就是说Throwable是Exception和Error的父类。
而Exception和Error是有区别的:
Exception:是可以通过代码进行处理的异常。
Error:是错误,通常是不可能通过代码进行处理的异常。是错误,并且是会导致程序崩溃的。
所以在抛异常时,应该抛Exception时你抛Throwable肯定是没问题的,关键在于细节,对于异常应该是尽可能去抛详细准确的异常,根据异常可以知道到底是什么位置出了问题。
打个比喻:
我数组角标越界了,你是不是应该抛异常,两种情景:
-----1.我抛数组角标越界异常,那么我会很清楚的知道是数组角标越界了。
------2.我抛数组角标越界异常的父类的父类的父类。。。也就是Throwable,那么我会清楚的知道是Java异常,但是到底是哪儿的异常,就真的说不出来了。
再举个实际的例子:问你是哪儿的人?
1.我是xx省xx市xx县xx村的人。
2.我住地球上。
你认为哪个答案更贴切? |