什么时候向上抛出异常?
1.传递一个危险信号,需要让调用方知道
2.本方法没有能力处理的异常,调用方有能力处理
3.抛出是框架层面的选择
打个比方,小孩摔倒了,伤口流血,告诉爸妈是一个危险信号。告诉医生是他们有能力处理。告诉身体,是框架层面的,自动去调节身体免疫系统throw和throws的区别?
1.throws 出现在方法声明上,而throw通常都出现在方法体内
2.throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某个异常对象运行时异常与非运行时异常的区别?
1.运行时异常是不可查异常,不需要进行显式的捕捉
2.非运行时异常是可查异常,必须进行显式的捕捉,或者抛出常见的 RuntimeException 有哪些?
1.ClassCastException(类转换异常)
2.IndexOutOfBoundsException(数组越界)
3.NullPointerException(空指针)
4.ArrayStoreException(数据存储异常,操作数组时类型不一致)
5.IO操作的BufferOverflowException异常
参考
https://zhuanlan.zhihu.com/p/56115804
https://www.zhihu.com/question/25530011/answer/314890026
https://how2j.cn/k/exception/exception-tutorial/332.html