朱倩
摘要:傳統(tǒng)的程序設(shè)計語言往往通過預(yù)判是否出現(xiàn)異常,但是這種錯誤處理機制會導(dǎo)致不少問題。為了加強程序的健壯性、流暢性、穩(wěn)定性,就需要考慮有可能發(fā)生的異常,并進行相應(yīng)的處理。該文作者結(jié)合教學(xué)實例,重點介紹Java程序設(shè)計語言如何處理異常。
關(guān)鍵詞:異常;處理機制;異常類
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)08-0100-02
1 概述
在應(yīng)用程序運行的過程中,經(jīng)常會出現(xiàn)這樣一些現(xiàn)象:用戶不按照要求輸入、需要進行處理的文件丟失、分母為零、數(shù)組下標超出預(yù)定范圍、網(wǎng)絡(luò)中斷等,我們把這種現(xiàn)象稱為異常。由于異常情況總是難免的,所以一個好的應(yīng)用程序不僅要滿足用戶的基本需求,還要具備處理有可能出現(xiàn)的異常情況的能力,即程序必須具備較強的容錯能力,把這種對異常進行處理的機制稱為異常處理。對異常處理有兩種常見方法:計算機系統(tǒng)遇到錯誤,給出出錯信息并結(jié)束正在運行的程序;由程序員在程序中加入異常處理的功能。早期的程序設(shè)計語言沒有提供專門進行異常處理的功能,程序員在編寫程序的過程中,進行處理異常的代碼往往和正常的代碼混雜在一起,導(dǎo)致程序的可維護性和可讀性下降。Java語言采取了異常處理機制,其方式為“拋出-捕獲”,一個異常一旦產(chǎn)生,Java語言采取相應(yīng)的機制來處理它,避免出現(xiàn)死循環(huán)、死機以及其他更大的危害,盡可能預(yù)防錯誤代碼帶來的不可預(yù)期的后果,整個程序的安全性得到了極大的提高。
2 Java語言中的異常概述
Java語言提供了功能強大的異常處理機制,將所有處理異常的代碼集中放置,以保證正常功能代碼和處理異常的代碼分開。在Java程序設(shè)計語言中,采用了大量的異常類來進行處理,這些異常類可分為兩大類:Java.lang.Exception和java.lang.Error。Exception類解決由程序本身及環(huán)境所產(chǎn)生的異常。而Error類則處理較少發(fā)生的內(nèi)部系統(tǒng)錯誤。Exception類異??梢圆东@并進行相應(yīng)處理,而Error類異常,則是由用戶按照系統(tǒng)提示關(guān)閉程序。常見的異常類如下表所示:
在以上常見的Java異常類中,每個異常類反映一類異常錯誤,其中包含了異常錯誤信息和處理方法。當程序運行過程中,出現(xiàn)一種異常現(xiàn)象,產(chǎn)生一個相應(yīng)的異常類對象,再由相應(yīng)的異常類進行處理,從而避免對系統(tǒng)產(chǎn)生更大的危害,以保證程序的正常運行。
3 常見的異常處理方法
常見的異常處理方法有兩種:一種處理異常是在產(chǎn)生異常的方法中,使用try…catch…finally結(jié)構(gòu);還有一種是進行異常的移交,使用關(guān)鍵字throws和throw交給上層方法去處理異常。
在該案例中,對三種異常進行了捕獲,分別是數(shù)組下標越界、輸入數(shù)據(jù)格式不正確和Exception異常,當觸發(fā)某種異常,則對相應(yīng)的異常異常進行處理。Exception異常類是所有異常的基類,當出現(xiàn)catch塊沒有進行捕獲的異常,則采用Exception異常類進行異常處理。
3.2 異常的移交
實例分析:初始化參數(shù)x使用了-2,將觸發(fā)NegativeArraySizeException異常,但在Sum方法中不對該異常進行處理,而是在main方法中對該異常進行處理,所以在聲明方法時,使用throws NegativeArraySizeException選項,拋出了該異常。使用main 方法對該方法進行捕獲。可見,如果一個方法沒有對可能出現(xiàn)的異常進行捕獲,調(diào)用該方法的其他方法應(yīng)該對其可能出現(xiàn)的異常進行捕獲。
4 結(jié)束語
在進行程序設(shè)計過程中,異常是不可避免的。這些異常,即使程序本身沒有問題,也有可能產(chǎn)生,所以在開發(fā)時必須考慮處理。Java語言規(guī)定,在調(diào)用可能拋出捕獲異常的方法時,必須編寫處理異常的代碼,這不僅提高了程序的健壯性,而且避免程序開發(fā)人員忘記編寫必要的容錯代碼。本文指出了異常處理的兩種機制,除此之外還可以使用自定義異常進行處理,基于篇幅的原因就不在此討論了。
參考文獻:
[1] 李芝興. Java程序設(shè)計之網(wǎng)絡(luò)編程[M]. 北京: 清華大學(xué)出版社, 2006:194-200.
[2] 張聰品, 趙琛, 糜宏斌. 異常處理機制研究[J]. 計算機應(yīng)用研究, 2005(4):86-89.
[3] 肖連, 崔杜武.Java中可檢查異常的使用策略[J]. 計算機系統(tǒng)應(yīng)用, 2007(5).