新聞中心
InvocationTargetException屬于什么異常,是運(yùn)行時(shí)異常還是編譯時(shí)異常?
InvocationTargetException屬于運(yùn)行時(shí)異常。它是Java反射機(jī)制中的異常,當(dāng)通過(guò)反射調(diào)用方法時(shí),如果目標(biāo)方法拋出了異常,但是調(diào)用方?jīng)]有捕獲該異常,那么就會(huì)拋出InvocationTargetException。

成都創(chuàng)新互聯(lián)公司2013年開(kāi)創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元白銀做網(wǎng)站,已為上家服務(wù),為白銀各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
它是由Java虛擬機(jī)在運(yùn)行時(shí)拋出的,而不是在編譯時(shí)檢查的。因此,它不需要在方法簽名中聲明,也不需要在調(diào)用方進(jìn)行捕獲或聲明。
當(dāng)我們使用反射調(diào)用方法時(shí),如果目標(biāo)方法拋出了異常,我們可以通過(guò)捕獲InvocationTargetException來(lái)獲取原始異常信息,并進(jìn)行相應(yīng)的處理。
編譯錯(cuò)誤,一般是語(yǔ)法上存在問(wèn)題,編譯過(guò)不去;
運(yùn)行錯(cuò)誤,是指程序在運(yùn)行過(guò)程中出現(xiàn)錯(cuò)誤,只能說(shuō)是程序存在一定的邊界bug;
編譯錯(cuò)誤一般是指java語(yǔ)法的錯(cuò)誤,運(yùn)行錯(cuò)誤分兩種一種是error還有就是Exception 有的異常是拋出但可繼續(xù)執(zhí)行之后的代碼,
有的異常是無(wú)法繼續(xù)進(jìn)行的代碼如:
RuntimeException,ClassCastException, 那么,編譯和運(yùn)行時(shí)期最好的理解就是java1.5之后出現(xiàn)的泛型機(jī)制,
在以前的版本中如果考慮不當(dāng),只會(huì)在運(yùn)行時(shí)出現(xiàn)異常,現(xiàn)在加了泛型,問(wèn)題會(huì)給暴露在編譯時(shí)期,這樣就提高了代碼的安全性。
編譯錯(cuò)誤和運(yùn)行時(shí)異常怎么區(qū)分?
編譯錯(cuò)誤,一般是語(yǔ)法上存在問(wèn)題,編譯過(guò)不去; 運(yùn)行錯(cuò)誤,是指程序在運(yùn)行過(guò)程中出現(xiàn)錯(cuò)誤,只能說(shuō)是程序存在一定的邊界bug; 編譯錯(cuò)誤一般是指java語(yǔ)法的錯(cuò)誤,運(yùn)行錯(cuò)誤分兩種一種是error還有就是Exception 有的異常是拋出但可繼續(xù)執(zhí)行之后的代碼,有的異常是無(wú)法繼續(xù)進(jìn)行的代碼如: RuntimeException,ClassCastException, 那么,編譯和運(yùn)行時(shí)期最好的理解就是java1.5之后出現(xiàn)的泛型機(jī)制,在以前的版本中如果考慮不當(dāng),只會(huì)在運(yùn)行時(shí)出現(xiàn)異常,現(xiàn)在加了泛型,問(wèn)題會(huì)給暴露在編譯時(shí)期,這樣就提高了代碼的安全性。
Error與Exception有什么區(qū)別?
Error和Exception的聯(lián)系
繼承結(jié)構(gòu):Error和Exception都是繼承于Throwable,RuntimeException繼承自Exception。
Error和RuntimeException及其子類稱為未檢查異常(Unchecked exception),其它異常成為受檢查異常(Checked Exception)。
Error和Exception的區(qū)別
Error類一般是指與虛擬機(jī)相關(guān)的問(wèn)題,如系統(tǒng)崩潰,虛擬機(jī)錯(cuò)誤,內(nèi)存空間不足,方法調(diào)用棧溢出等。如java.lang.StackOverFlowError和Java.lang.OutOfMemoryError。對(duì)于這類錯(cuò)誤,Java編譯器不去檢查他們。對(duì)于這類錯(cuò)誤的導(dǎo)致的應(yīng)用程序中斷,僅靠程序本身無(wú)法恢復(fù)和預(yù)防,遇到這樣的錯(cuò)誤,建議讓程序終止。
Exception類表示程序可以處理的異常,可以捕獲且可能恢復(fù)。遇到這類異常,應(yīng)該盡可能處理異常,使程序恢復(fù)運(yùn)行,而不應(yīng)該隨意終止異常。
運(yùn)行時(shí)異常和受檢查的異常
Exception又分為運(yùn)行時(shí)異常(Runtime Exception)和受檢查的異常(Checked Exception )。
RuntimeException:其特點(diǎn)是Java編譯器不去檢查它,也就是說(shuō),當(dāng)程序中可能出現(xiàn)這類異常時(shí),即使沒(méi)有用try……catch捕獲,也沒(méi)有用throws拋出,還是會(huì)編譯通過(guò),如除數(shù)為零的ArithmeticException、錯(cuò)誤的類型轉(zhuǎn)換、數(shù)組越界訪問(wèn)和試圖訪問(wèn)空指針等。處理RuntimeException的原則是:如果出現(xiàn)RuntimeException,那么一定是程序員的錯(cuò)誤。
受檢查的異常(IOException等):這類異常如果沒(méi)有try……catch也沒(méi)有throws拋出,編譯是通不過(guò)的。這類異常一般是外部錯(cuò)誤,例如文件找不到、試圖從文件尾后讀取數(shù)據(jù)等,這并不是程序本身的錯(cuò)誤,而是在應(yīng)用環(huán)境中出現(xiàn)的外部錯(cuò)誤。
到此,以上就是小編對(duì)于java異常類的問(wèn)題就介紹到這了,希望這3點(diǎn)解答對(duì)大家有用。
本文題目:Java異常ClassCastException的解決
標(biāo)題路徑:http://www.fisionsoft.com.cn/article/dppddho.html


咨詢
建站咨詢
