日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 互聯(lián)網(wǎng) > JAVA學習第十八課(異常及其思想 (一) )

JAVA學習第十八課(異常及其思想 (一) )

來源:程序員人生   發(fā)布時間:2014-10-09 07:16:57 閱讀次數(shù):3192次
異常:重要知識點

異常處理的代碼簡單,重要還是理解其思想

一.概述:

異常就是在運行時發(fā)生的不正常情況

Throwable: Error 通常出現(xiàn)重大問題如,運行的類不存在或者內(nèi)存溢出等 不編寫針對代碼對其處理 Exception 在運行時運行出現(xiàn)的一起情況,可以通過trt catch finally


Exception和Error的子類名都是以父類名作為后綴

異常舉例:數(shù)組越界、傳遞參數(shù)錯誤啊。。。

class Futime { } class Bigtime { } public class Main { public static void main(String[] args) { /*int[] a = new int[5]; * a = null; System.out.println(a[5]);//異常 */ sleep(-5); } /*public static void sleep(int t) { if(t<0) { //數(shù)據(jù)出錯,處理辦法 //數(shù)據(jù)出錯,處理辦法 //數(shù)據(jù)出錯,處理辦法 //.....閱讀性差 修正見下 } else if(t>10000) { //數(shù)據(jù)出錯,處理辦法 //數(shù)據(jù)出錯,處理辦法 //數(shù)據(jù)出錯,處理辦法 new Bigtime(); } else { System.out.print("休息"+t+"分種"); } }*/ public static void sleep(int t)//這樣就清晰很多 { if(t<0)//但是注意就有個問題,誰在調(diào)用這個功能,如何收到異常呢 {//采用拋出的方式 拋出 new Futime();//代表時間為負情況,這個對象中包含著問的名稱,信息,位置等信息 } else if(t>10000)//比如:我感冒了 { 拋出 new Bigtime();//C是吃藥,上醫(yī)院...,而java就可以理解找治感冒的方法 } else { System.out.print("休息"+t+"分種"); } } }

 *
 * 這就體現(xiàn)出JAVA和c的不同,C是用if判斷然后寫諸多的解決方法,而java中是用
 * 類的形式對不正常的情況進行了描述和封裝對象
 * 描述不正常的情況的類,就稱為異常類
 * 以前正常流程代碼和問題處理代碼相結合
 * 現(xiàn)在將正常流程代碼和問題處理代碼相分離,提高閱讀性
 * 其實異常就是java通過面向對象的思想將問題封裝成了對象
 * 用異常類對其進行描述
 * 
 * 總結一句話就是不同的問題用不同的類進行具體的描述,比如角標越界,空指針
 * 

二.異常體系

如果問題很多就意味著描述的類以前很多
將其共性進行向上抽取,就形成了異常體系
最終問題(不正常情況)就分成了兩大類

Throwable://無論是error,還是異常問題,問題發(fā)生就應該可以拋出,讓調(diào)用者知道并處理 ->可拋性

(父類下面有兩大派 )
1.一般不可處理的。用Error類表示
2.可以處理的。用Exception

體系特點:
Throwable及其所有子類都具有可拋性,不是這體系的不行

如何體現(xiàn)可拋性?

通過兩個關鍵字:throws和throw,凡是被這兩個關鍵字所操作的類和對象都具備可拋性
(Error和Exception類似于疾病,可以治愈的,和不可以治愈的)
Error:
特點:是由JVM拋出的嚴重性的問題,已經(jīng)影響到程序的運行了
這種問題的發(fā)生一般不針對性處理,因為處理不了,直接修改程序(int[] a = new int[1024*1024*800],開辟一個800M的數(shù)組)

Exception的直接子類很多,Error的直接子類不多,但是都是不可處理的,比較狠
體系的特點
子類的后綴名都是用其父類名作為后綴,閱讀性強,比如OutOfMemoryError

三、原理及其異常對象的拋出


小演示:

class ExceptionDemo { public int method(int[] arr,int index) { if(arr==null) throw new NullPointerException("數(shù)組引用怎么能為空呢?"); if(index>=arr.length) { //return -1;為什么不寫return,因為跟本就不運算 throw new ArrayIndexOutOfBoundsException("數(shù)組角標越界"+index); //throw new ArrayIndexOutOfBoundsException(""+index);//默認的 } if(index<0) { throw new ArrayIndexOutOfBoundsException("數(shù)組角標不能為負"+index); } return arr[index]; } } public class Main { public static void main(String[] args) { int[] a = new int[10]; ExceptionDemo C = new ExceptionDemo(); int num = C.method(a,20); //int num = C.method(null,2); System.out.print("num"+num); } }

四、自定義異常類及其拋出

類似于負數(shù)角標異常這種情況在java中并沒有定義,那就可以按照java異常的創(chuàng)建思想,將負數(shù)角標異常這情況進行自定義描述,并封裝稱對象(自定義異常)

PS:如果讓一個類稱為異常類,那么這個類必須繼承異常體系,只有異常體系的子類才具備可拋性,才可以被throw,throws兩個關鍵字操作

class FuException extends Exception { FuException() { } } //定義一個異常后,需要告訴調(diào)用者可能出現(xiàn)的問題 class ExceptionDemo {//要么捕捉,要么拋出 public int method(int[] arr,int index) throws FuException { if(index<0) { throw new FuException(); } return arr[index]; } } public class Main { public static void main(String[] args)throws FuException { int[] a = new int[10]; ExceptionDemo C = new ExceptionDemo(); int num = C.method(a,-2); System.out.print("num"+num); } }

上述兩個throws就對應了以上圖示

五、編譯時檢測異常和運行時異常的區(qū)別

異常的分類:

1.編譯時被檢測異常:只要是Exception和其子類都是,除了特殊子類RuntimeException體系
ps:這種問題一旦出現(xiàn),希望在編譯時就進行檢測,讓這種問題有對應的處理方式,這樣的問題都可以針對性的處理

2.編譯時不檢測異常(運行時異常):就是RuntimeException和其子類->編譯器根本就不檢測這個體系
ps:這種問題的發(fā)生無法讓功能繼續(xù),運算無法進行,更多是因為調(diào)用者的原因導致的或者引發(fā)了內(nèi)部狀態(tài)的改變導致的
那么這種問題一般不處理,直接編譯通過,在運行時,讓調(diào)用者調(diào)用的程序強制停止,讓調(diào)用者對代碼修改
(開發(fā)常碰見的異常)

所以自定義異常時,要么定義Exception,要么RuntimeException

throw和throws的區(qū)別

1.throws使用在函數(shù)上
   throw使用在函數(shù)內(nèi)
2.throws拋出的是異常類,可以拋出多個,用逗號隔開
   throw拋出的是對象

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产激情 | 欧美日韩国产精品一区 | 一区二区三区四区不卡 | 色九九九 | 国产精品乱 | 亚洲久久网 | 美女久久| 日韩av网址大全 | 欧美一区二区国产 | 免费黄色欧美 | 久久久精品国产 | 97在线免费观看视频 | 中文字幕亚洲欧美 | 天天色网站 | 成人国产精品视频 | 熟女少妇a性色生活片毛片 国产伊人精品 | 精品久久av| 麻豆成人久久精品二区三区小说 | 亚洲高清色图 | 久久黄网 | 日韩一级| 亚洲精品h | 国产激情在线观看视频 | avtt在线观看 | 黄色特级网站 | 日日操夜夜操狠狠操 | 国产一二三区不卡 | 午夜精品一区二区三区在线 | 亚洲第一天堂 | 国产亚洲精品美女 | 秋霞毛片 | 91香蕉一区二区三区在线观看 | 国产欧美日韩在线 | 亚洲精品国产第一综合99久久 | 狠狠色伊人亚洲综合成人 | 国产精品久久久久久久久久久免费看 | 欧美色亚洲色 | 欧州一区二区 | 免费看男女www网站入口在线 | 草草网站 | 国产亚洲欧美另类一区二区三区 |