這篇文章主要介紹了Java異常和斷言如何使用的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Java異常和斷言如何使用文章都會有所收獲,下面我們一起來看看吧。
我們注重客戶提出的每個要求,我們充分考慮每一個細(xì)節(jié),我們積極的做好成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),我們努力開拓更好的視野,通過不懈的努力,創(chuàng)新互聯(lián)公司贏得了業(yè)內(nèi)的良好聲譽,這一切,也不斷的激勵著我們更好的服務(wù)客戶。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計,微信小程序開發(fā),網(wǎng)站開發(fā),技術(shù)開發(fā)實力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫的技術(shù)開發(fā)工程師。
Java異常
在Java中,一個異常對象總是Throwable子類的實例。
Error類體系描述了Java運行系統(tǒng)中的內(nèi)部錯誤以及資源耗盡的情況。
由編程導(dǎo)致的錯誤,會導(dǎo)致RuntimeException異常。而其他錯誤原因?qū)е碌漠惓?---例如,因為I/O錯誤導(dǎo)致的曾經(jīng)運行正確的程序出錯,都不會導(dǎo)致RuntimeException異常。
從RuntimeException衍生出來的異常包括下面的問題:1〉錯誤的類型轉(zhuǎn)換;2〉數(shù)組越界訪問;3〉試圖訪問一個空指針。
不是從RuntimeException衍生出來的異常包括:
1〉試圖從文件尾后面讀取數(shù)據(jù);
2〉試圖打開一個錯誤格式的URL;
3〉試圖用一個字符串來構(gòu)造一個Class對象,而當(dāng)該字符串對應(yīng)的類并不存在;
處理RuntimeException的原則是:如果出現(xiàn)RuntimeException,則一定是你的錯誤;
不同的瀏覽器可以處理不同類型的URL,所以,URL格式是否錯誤依賴于具體的環(huán)境,而不僅僅是程序代碼;
Java語言規(guī)范中將任何Error的子類以及RuntimeException的子類都稱為未檢查異常,而其他的異常則稱為已檢查異常;
僅僅在以下4種情況下,才會拋出異常:
1〉調(diào)用了一個會拋出"已檢查異常"的方法,例如BufferReader類的readLine方法;
2〉程序運行過程中發(fā)生了錯誤,并且用throw語句拋出一個"已檢查異常";
3〉程序錯誤,例如a[-1]=0會拋出一個"未檢查異常"如數(shù)組下標(biāo)越界(ArrayIndex--OutOfBoundsException);
4〉Java虛擬機或者是運行時庫出現(xiàn)了內(nèi)部錯誤;
不需要聲明Java的內(nèi)部錯誤。一個方法必須聲明它可能拋出的全部"已檢查異常"。如果在自己的子類中覆蓋了一個來自父類的方法。特別需要注意的是,如果父類方法根本沒有拋出任何"已檢查異常",則子類也只能如此;
在Java中,沒有throws指示符的方法是不能拋出任何已檢查Java異常的;
對于try/catch代碼塊,如果方法內(nèi)的任何代碼拋出了一個異常,同時它的類型沒有在catch中指定,則方法會立即退出;
應(yīng)捕捉并且處理那些已知如何處理的異常(用catch),而傳遞那些不知如何處理的異常(用throws);
對于try/catch/finally代碼塊,無論是否捕獲異常,都會執(zhí)行finally從句中的代碼;
雖然Java程序員必須在finally從句中人工設(shè)置代碼來回收資源,但由于Java內(nèi)建有"垃圾收集"機制,所以只有極少數(shù)的資源才要求人工進(jìn)行回收;
actionPerformed方法不能拋出任何已檢查異常;
使用Java異常機制的一些技巧:
1〉異常控制不能代替簡單的測試,和執(zhí)行簡單的測試相比,捕捉異常所需的時間大大超過前者,所以,只有在異常情況下才使用異常;
2〉不要過分細(xì)化異常;
3〉不要壓制異常:可以使用如下格式: try { //代碼 } catch (Exception e) { //空 }
4〉不要羞于傳遞異常:對于某些異常(如調(diào)用FileInputStream構(gòu)造器或者readLine方法產(chǎn)生的異常),傳遞它比捕捉它更好。讓高層的方法來通知用戶發(fā)生了錯誤或者放棄執(zhí)行不成功的命令更合適。
Java斷言
默認(rèn)情況下,Java斷言是關(guān)閉的。可通過-ea來打開,用-da來關(guān)閉。選項-ea:...會打開默認(rèn)包中全部類的斷言功能,打開或者關(guān)閉斷言是類裝載器的功能;
-da和-ea選項對那些沒有類加載器的"系統(tǒng)類"是不起作用的。對于這些系統(tǒng)類,要使用-enablesystemassertions/-esa選項來打開斷言功能;
Java斷言使用技巧:
1>斷言失敗是致命的,不可恢復(fù)的錯誤;
2>斷言檢查僅僅用在程序開發(fā)和測試階段;
因此,不應(yīng)該用斷言作為信號來通知程序的另外部分發(fā)生了可恢復(fù)錯誤,或者將斷言作為通知程序使用者的方式。Java斷言僅僅應(yīng)該在測試階段用來定位程序內(nèi)部錯誤;
Java斷言是在測試和調(diào)試階段使用的工具,而日志是在程序整個生命周期中都使用的策略性工具。
下面是think in java中的一段
違例準(zhǔn)則
用違例做下面這些事情:
(1) 解決問題并再次調(diào)用造成違例的方法。
(2) 平息事態(tài)的發(fā)展,并在不重新嘗試方法的前提下繼續(xù)。
(3) 計算另一些結(jié)果,而不是希望方法產(chǎn)生的結(jié)果。
(4) 在當(dāng)前環(huán)境中盡可能解決問題,以及將相同的違例重新“擲”出一個更高級的環(huán)境。
(5) 在當(dāng)前環(huán)境中盡可能解決問題,以及將不同的違例重新“擲”出一個更高級的環(huán)境。
(6) 中止程序執(zhí)行。
(7) 簡化編碼。若違例方案使事情變得更加復(fù)雜,那就會令人非常煩惱,不如不用。
(8) 使自己的庫和程序變得更加安全。這既是一種“短期投資”(便于調(diào)試),也是一種“長期投資”(改善應(yīng)用程序的健壯性)
關(guān)于“Java異常和斷言如何使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Java異常和斷言如何使用”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。