什么時(shí)候向上拋出異常?
1.傳遞一個(gè)危險(xiǎn)信號(hào),需要讓調(diào)用方知道
2.本方法沒有能力處理的異常胎食,調(diào)用方有能力處理
3.拋出是框架層面的選擇
打個(gè)比方,小孩摔倒了厕怜,傷口流血衩匣,告訴爸媽是一個(gè)危險(xiǎn)信號(hào)。告訴醫(yī)生是他們有能力處理粥航。告訴身體,是框架層面的递雀,自動(dòng)去調(diào)節(jié)身體免疫系統(tǒng)throw和throws的區(qū)別柄延?
1.throws 出現(xiàn)在方法聲明上缀程,而throw通常都出現(xiàn)在方法體內(nèi)
2.throws 表示出現(xiàn)異常的一種可能性,并不一定會(huì)發(fā)生這些異常杨凑;throw則是拋出了異常滤奈,執(zhí)行throw則一定拋出了某個(gè)異常對象運(yùn)行時(shí)異常與非運(yùn)行時(shí)異常的區(qū)別撩满?
1.運(yùn)行時(shí)異常是不可查異常绅你,不需要進(jìn)行顯式的捕捉
2.非運(yùn)行時(shí)異常是可查異常,必須進(jìn)行顯式的捕捉搞糕,或者拋出常見的 RuntimeException 有哪些?
1.ClassCastException(類轉(zhuǎn)換異常)
2.IndexOutOfBoundsException(數(shù)組越界)
3.NullPointerException(空指針)
4.ArrayStoreException(數(shù)據(jù)存儲(chǔ)異常窍仰,操作數(shù)組時(shí)類型不一致)
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