亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

error和exception的區別,RuntimeException和非RuntimeException的區別

2019-11-14 08:51:53
字體:
來源:轉載
供稿:網友

1. 異常機制       異常機制是指當程序出現錯誤后,程序如何處理。具體來說,異常機制提供了程序退出的安全通道。當出現錯誤后,程序執行的流程發生改變,程序的控制權轉移到異常處理器。

      傳統的處理異常的辦法是,函數返回一個特殊的結果來表示出現異常(通常這個特殊結果是大家約定俗稱的),調用該函數的程序負責檢查并分析函數返回的結果。這樣做有如下的弊端:例如函數返回-1代表出現異常,但是如果函數確實要返回-1這個正確的值時就會出現混淆;可讀性降低,將程序代碼與處理異常的代碼混爹在一起;由調用函數的程序來分析錯誤,這就要求客戶程序員對庫函數有很深的了解。異常處理的流程:① 遇到錯誤,方法立即結束,并不返回一個值;同時,拋出一個異常對象 。② 調用該方法的程序也不會繼續執行下去,而是搜索一個可以處理該異常的異常處理器,并執行其中的代碼 。

2 異常的分類 異常的分類:① 異常的繼承結構:基類為Throwable,Error和Exception繼承Throwable,RuntimeException和IOException等繼承Exception,具體的RuntimeException繼承RuntimeException。 ② Error和RuntimeException及其子類成為未檢查異常(unchecked),其它異常成為已檢查異常(checked)。

每個類型的異常的特點 Error體系 :      Error類體系描述了java運行系統中的內部錯誤以及資源耗盡的情形。應用程序不應該拋出這種類型的對象(一般是由虛擬機拋出)。如果出現這種錯誤,除了盡力使程序安全退出外,在其他方面是無能為力的。所以,在進行程序設計時,應該更關注Exception體系。

Exception體系包括RuntimeException體系和其他非RuntimeException的體系 :① RuntimeException:RuntimeException體系包括錯誤的類型轉換、數組越界訪問和試圖訪問空指針等等。處理RuntimeException的原則是:如果出現RuntimeException,那么一定是程序員的錯誤。例如,可以通過檢查數組下標和數組邊界來避免數組越界訪問異常。 ②其他非RuntimeException(IOException等等):這類異常一般是外部錯誤,例如試圖從文件尾后讀取數據等,這并不是程序本身的錯誤,而是在應用環境中出現的外部錯誤。

與C++異常分類的不同 :① Java中RuntimeException這個類名起的并不恰當,因為任何異常都是運行時出現的。(在編譯時出現的錯誤并不是異常,換句話說,異常就是為了解決程序運行時出現的的錯誤)。 ② C++中logic_error與Java中的RuntimeException是等價的,而runtime_error與Java中非RuntimeException類型的異常是等價的。3 異常的使用方法 聲明方法拋出異常 ① 語法:throws(略) ② 為什么要聲明方法拋出異常?       方法是否拋出異常與方法返回值的類型一樣重要。假設方法拋出異常卻沒有聲明該方法將拋出異常,那么客戶程序員可以調用這個方法而且不用編寫處理異常的代碼。那么,一旦出現異常,那么這個異常就沒有合適的異常控制器來解決。 ③ 為什么拋出的異常一定是已檢查異常?       RuntimeException與Error可以在任何代碼中產生,它們不需要由程序員顯示的拋出,一旦出現錯誤,那么相應的異常會被自動拋出。而已檢查異常是由程序員拋出的,這分為兩種情況:客戶程序員調用會拋出異常的庫函數(庫函數的異常由庫程序員拋出);客戶程序員自己使用throw語句拋出異常。遇到Error,程序員一般是無能為力的;遇到RuntimeException,那么一定是程序存在邏輯錯誤,要對程序進行修改(相當于調試的一種方法);只有已檢查異常才是程序員所關心的,程序應該且僅應該拋出或處理已檢查異常。       注意:覆蓋父類某方法的子類方法不能拋出比父類方法更多的異常,所以,有時設計父類的方法時會聲明拋出異常,但實際的實現方法的代碼卻并不拋出異常,這樣做的目的就是為了方便子類方法覆蓋父類方法時可以拋出異常。

如何拋出異常 ① 語法:throw(略) ② 拋出什么異常?對于一個異常對象,真正有用的信息時異常的對象類型,而異常對象本身毫無意義。比如一個異常對象的類型是ClassCastException,那么這個類名就是唯一有用的信息。所以,在選擇拋出什么異常時,最關鍵的就是選擇異常的類名能夠明確說明異常情況的類。 ③ 異常對象通常有兩種構造函數:一種是無參數的構造函數;另一種是帶一個字符串的構造函數,這個字符串將作為這個異常對象除了類型名以外的額外說明。 ④ 創建自己的異常:當Java內置的異常都不能明確的說明異常情況的時候,需要創建自己的異常。需要注意的是,唯一有用的就是類型名這個信息,所以不要在異常類的設計上花費精力。

捕獲異常       如果一個異常沒有被處理,那么,對于一個非圖形界面的程序而言,該程序會被中止并輸出異常信息;對于一個圖形界面程序,也會輸出異常的信息,但是程序并不中止,而是返回用錯誤頁面。      語法:try、catch和finally(略),控制器模塊必須緊接在try塊后面。若擲出一個異常,異??刂茩C制會搜尋參數與異常類型相符的第一個控制器隨后它會進入那個catch 從句,并認為異常已得到控制。一旦catch 從句結束對控制器的搜索也會停止。       捕獲多個異常(注意語法與捕獲的順序)(略)       finally的用法與異常處理流程(略)       異常處理做什么?對于Java來說,由于有了垃圾收集,所以異常處理并不需要回收內存。但是依然有一些資源需要程序員來收集,比如文件、網絡連接和圖片等資源。       應該聲明方法拋出異常還是在方法中捕獲異常?原則:捕捉并處理哪些知道如何處理的異常,而傳遞哪些不知道如何處理的異常。再次拋出異常 ①為什么要再次拋出異常? 在本級中,只能處理一部分內容,有些處理需要在更高一級的環境中完成,所以應該再次拋出異常。這樣可以使每級的異常處理器處理它能夠處理的異常。 ②異常處理流程 :對應與同一try塊的catch塊將被忽略,拋出的異常將進入更高的一級。4 關于異常的其他問題 ① 過度使用異常 :首先,使用異常很方便,所以程序員一般不再愿意編寫處理錯誤的代碼,而僅僅是簡簡單單的拋出一個異常。這樣做是不對的,對于完全已知的錯誤,應該編寫處理這種錯誤的代碼,增加程序的魯棒性。另外,異常機制的效率很差。 ② 將異常與普通錯誤區分開:對于普通的完全一致的錯誤,應該編寫處理這種錯誤的代碼,增加程序的魯棒性。只有外部的不能確定和預知的運行時錯誤才需要使用異常。 ③ 異常對象中包含的信息 :一般情況下,異常對象唯一有用的信息就是類型信息。但使用異常帶字符串的構造函數時,這個字符串還可以作為額外的信息。調用異常對象的getMessage()、toString()或者PRintStackTrace()方法可以分別得到異常對象的額外信息、類名和調用堆棧的信息。并且后一種包含的信息是前一種的超集。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人亚洲综合91精品| 久久久久久久久久久免费| 成人午夜激情免费视频| 97热在线精品视频在线观看| 国产精品国产三级国产aⅴ9色| 欧美亚洲在线观看| 久久99国产综合精品女同| 欧美电影电视剧在线观看| 亚洲一区二区三区乱码aⅴ| 久久精品小视频| 久久久久久久久久久免费精品| 久久人体大胆视频| 久久99视频精品| 岛国av一区二区在线在线观看| 91麻豆国产语对白在线观看| 国产午夜精品理论片a级探花| 国产欧美精品一区二区三区-老狼| 亚洲人成在线免费观看| 精品成人av一区| 91高清视频免费| 亚洲欧美综合区自拍另类| 亚洲欧美国产va在线影院| 色偷偷av亚洲男人的天堂| 成人亚洲激情网| 精品福利免费观看| 国产精品丝袜视频| 欧美中文在线观看| 91av在线网站| 欧美在线不卡区| 欧美肥老太性生活视频| 亚洲精品自产拍| 久久久久久久久久av| 国产精品亚洲美女av网站| 久久伊人精品视频| 国产成人在线一区二区| 国产亚洲欧洲高清| 亚洲**2019国产| 日韩中文字幕在线看| 69久久夜色精品国产69| 亚洲丝袜av一区| 亚洲第一页自拍| 欧美激情一区二区久久久| 欧美一区二区三区四区在线| 91久久久亚洲精品| 亚洲新中文字幕| 国产午夜精品视频免费不卡69堂| 国产精品自在线| 久久精品欧美视频| 亚洲欧洲第一视频| 中文字幕国产日韩| 俺去亚洲欧洲欧美日韩| 麻豆乱码国产一区二区三区| 91精品国产高清久久久久久久久| 亚洲影院色在线观看免费| 亚洲新声在线观看| 国产精品视频一区二区三区四| 中文字幕亚洲图片| 国产在线精品自拍| 国产精品流白浆视频| 国产精品一区二区三区成人| 亚洲加勒比久久88色综合| 亚洲va久久久噜噜噜| 亚洲天堂网站在线观看视频| 国产性色av一区二区| 中文字幕国产亚洲2019| 国产亚洲福利一区| 日韩精品免费视频| 伦伦影院午夜日韩欧美限制| 国产成+人+综合+亚洲欧洲| 亚洲欧美国产高清va在线播| 国产在线视频2019最新视频| 亚洲视频在线免费观看| 亚洲精品国产品国语在线| 色综合久久中文字幕综合网小说| 久久精品国产久精国产思思| 成人在线播放av| 另类少妇人与禽zozz0性伦| 国产精品中文久久久久久久| 亚洲高清免费观看高清完整版| 日韩av在线免费播放| 亚洲欧美日韩在线高清直播| 欧美日韩精品在线播放| 亚洲第一综合天堂另类专| 一区二区三区回区在观看免费视频| 成人激情视频小说免费下载| 一夜七次郎国产精品亚洲| 国产欧美精品在线| 精品久久久免费| 国产精品视频公开费视频| 国产成一区二区| 亚洲毛片在线看| 国产女同一区二区| 上原亚衣av一区二区三区| 黑人极品videos精品欧美裸| 日韩av电影免费观看高清| 亚洲毛片在线观看| 久久久久免费视频| 国产成人亚洲综合91精品| 欧美第一黄网免费网站| 日韩中文av在线| 日韩欧美国产激情| xvideos亚洲人网站| 亚洲综合小说区| 91精品综合视频| 国产成人精品日本亚洲专区61| 欧美日韩亚洲一区二区| 欧美在线欧美在线| 91精品国产综合久久香蕉922| 欧美与欧洲交xxxx免费观看| 国产亚洲精品久久久| 久久综合国产精品台湾中文娱乐网| 亚洲国产小视频在线观看| 中文字幕亚洲综合| 精品久久久久久中文字幕一区奶水| yw.139尤物在线精品视频| 日韩中文字幕精品视频| 欧美国产视频日韩| 国产精品爽爽ⅴa在线观看| 久久视频精品在线| 国产欧美精品在线播放| 国内精品久久久久影院 日本资源| 久久国产精彩视频| 亚洲乱亚洲乱妇无码| 中文字幕亚洲专区| 欧美日韩国产精品一区二区三区四区| 久久人人爽人人爽人人片av高请| 日韩电视剧在线观看免费网站| 国产日韩综合一区二区性色av| 国产精品xxx视频| 精品国产电影一区| 欧美日韩成人免费| 欧美大奶子在线| 亚洲天堂网站在线观看视频| 国产精品久久久久久中文字| 日本久久久久亚洲中字幕| 亚洲成人性视频| 国产专区欧美专区| 欧美国产日韩免费| 欧美福利视频网站| 国产精品美女无圣光视频| 国产99久久精品一区二区| 日韩精品在线免费观看| 欧美激情手机在线视频| 久久99精品久久久久久噜噜| 欧美最近摘花xxxx摘花| 久久99青青精品免费观看| 欧美精品制服第一页| 欧美性受xxxx白人性爽| 国产精品美女主播在线观看纯欲| 欧美日本高清一区| 色综合91久久精品中文字幕| 亚洲欧洲在线免费| 日本最新高清不卡中文字幕| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲国产精品一区二区久| 欧美在线观看视频| 黑人巨大精品欧美一区二区一视频| 欧美激情一区二区三区成人| 欧美国产在线电影| 97欧美精品一区二区三区| 亚洲黄一区二区| 国产精自产拍久久久久久蜜| 亚洲视频电影图片偷拍一区| 国产在线拍偷自揄拍精品|