二十四尼桶、異常處理

上課視頻:
鏈接:https://pan.baidu.com/s/1GCFDnN3Uc66AkobBHe7AdQ 密碼:5olh
鏈接:https://pan.baidu.com/s/1q2mbinKgeH3WYnkgOqJOwg 密碼:vomi
鏈接:https://pan.baidu.com/s/1-SkSx3ctTgE1OG3a3m7eFA 密碼:8hdq

一、如何異常處理

java錯(cuò)誤分為
有兩個(gè)重要的子類:Exception(異常)和 Error(錯(cuò)誤)仗处,二者都是 Java 異常處理的重要子類曲饱,都繼承于Throwable,各自都包含大量子類添寺。

一個(gè)是Error(錯(cuò)誤)

是程序無(wú)法處理的錯(cuò)誤趴拧,表示運(yùn)行應(yīng)用程序中較嚴(yán)重問(wèn)題溅漾。例如,Java虛擬機(jī)運(yùn)行錯(cuò)誤(Virtual MachineError)著榴,當(dāng) JVM 不再有繼續(xù)執(zhí)行操作所需的內(nèi)存資源時(shí)添履,將出現(xiàn) OutOfMemoryError。這些異常發(fā)生時(shí)脑又,Java虛擬機(jī)(JVM)一般會(huì)選擇線程終止暮胧。這些錯(cuò)誤表示故障發(fā)生于虛擬機(jī)自身锐借、或者發(fā)生在虛擬機(jī)試圖執(zhí)行應(yīng)用時(shí),如Java虛擬機(jī)運(yùn)行錯(cuò)誤(Virtual MachineError)叔壤、類定義錯(cuò)誤(NoClassDefFoundError)等瞎饲。

二口叙、Exception(異常)

一個(gè)簡(jiǎn)單異常處理案例:

如下圖


image

語(yǔ)法1

try{
    //需要異常捕獲的代碼塊
}catch(Exception e){
    //捕獲異常后需要處里的代碼塊
}

語(yǔ)法2

try{
    //需要異常捕獲的代碼塊
}catch(Excetion e){
    //捕獲異常后需要處里的代碼塊
}finally{
     //有沒有走異常都會(huì)走的代碼塊
}

語(yǔ)法3

try{
    //需要異常捕獲的代碼塊
}catch(Excetion的子類 e){
    //捕獲異常后需要處里的代碼塊
}catch(Excetion的子類 e){
    //捕獲異常后需要處里的代碼塊
}catch(Excetion e){
    //捕獲異常后需要處里的代碼塊
}finally{
     //有沒有走異常都會(huì)走的代碼塊
}

二炼绘、常見異常

1、類型轉(zhuǎn)換失敗

Car car =new BaoMa();
((AutoDriveInterface)car).autoDrive();

Exception in thread "main" java.lang.ClassCastException: com.lianwei01.BaoMa cannot be cast to com.lianwei01.AutoDriveInterface
        at com.lianwei01.Test.main(Test.java:7)

2妄田、被除數(shù)不能為零

System.out.println(6/0);

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at com.lianwei1.Test.main(Test.java:9

3俺亮、數(shù)組下標(biāo)越界
int array[] = {4,5,7,6,3};
System.out.println(array[5]);
最大下標(biāo)是4 ,而代碼中下標(biāo)使用了5所以越界了

java.lang.ArrayIndexOutOfBoundsException: 5
    at com.lianwei1.Test.main(Test.java:19)

4疟呐、空指針錯(cuò)誤

    String str = null;
    str.trim();
一個(gè)為空的對(duì)象去調(diào)用了這個(gè)對(duì)象所對(duì)應(yīng)為當(dāng)中的方法就會(huì)報(bào)這個(gè)錯(cuò)誤

Exception in thread "main" java.lang.NullPointerException
    at com.lianwei1.Test.main(Test.java:22)

三脚曾、自定義異常

就是自己寫一個(gè)類去繼承Exception類就是自定義異常

/**
 * 自定義異常
 * @author apple
 *
 */
public class NotFindFileExcetion extends Exception {
    
    public NotFindFileExcetion() {
        super("文件沒有找到錯(cuò)誤");
    }
}

四、自己拋出異常

throws :是寫在函數(shù)后面的启具,可能會(huì)拋出很多個(gè)
throw:是具體要拋出的異常

package com.lianwei1;

public class FileUtil {
    public static String findFile() throws NotFindFileExcetion,ArithmeticException {
        boolean  isFind= true;
        if (isFind) {
            int num1 = 4;
            int num2= 0;
            if (num2 ==0) {
                throw new ArithmeticException();
            }
            System.out.println();
            
            return "我找到了文件";
        }else {
            throw new NotFindFileExcetion();
        }
    }
}

五本讥、異常的捕獲順序

子類異常一定要先捕獲

try {
            FileUtil.findFile();
            //Exception ex = new ArithmeticException();
            int num1 = 8;
            int num2 = 1;
            System.out.println(num1/num2);
            int array [] = {3,4,6};
            System.out.println(array[4]);
        } catch (NotFindFileExcetion e) {
            System.out.println(e.getMessage());
        } catch (ArithmeticException e) {
            System.out.println(e.getMessage());
        }catch (Exception e) {
            System.out.println(e.getMessage());
        }

上課練習(xí)

編寫代碼,在main()方法中調(diào)用類CCircle中的方法鲁冯,計(jì)算圓的面積拷沸。并且自己定義一個(gè)異常類,如果半徑為負(fù)值薯演,拋出自己定義的異常撞芍。(在類CCircle中判斷并拋出異常)

一、選擇題

1跨扮、java中用來(lái)拋出異常的關(guān)鍵字是( )
A.try B.catch C.throw D.finally

2序无、關(guān)于異常,下列說(shuō)法正確的是( )
A. 異常是一種對(duì)象 B.一旦程序運(yùn)行衡创,異常將被創(chuàng)建
C.為了保證程序運(yùn)行速度帝嗡,要盡量避免異常控制 D.以上說(shuō)法都不對(duì)

3璃氢、()類是所有異常類的父類丈探。
A.Throwable B.Error C.Exception D. AWTError

4、java語(yǔ)言中拔莱,下列哪一子句是異常處理的出口( )
A.try{…}子句 B.catch{…}子句 C.finally{…}子句 D.以上說(shuō)法都不對(duì)

5.下列程序的執(zhí)行碗降,說(shuō)法錯(cuò)誤的是( )

class MultiCatch{
public static voidmain(String args[]) {
try
{
inta=args.length;
int b=42/a;
intc[]={1};
c[42]=99;
System.out.println(“b=”+b);
}
catch(ArithmeticException e)
{
System.out.println(“除0異常:”+e);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(“數(shù)組超越邊界異常:”+e);
}
}
}

A.程序?qū)⑤敵龅?5行的異常信息
B.程序第10行出錯(cuò)
C.程序?qū)⑤敵觥癰=42”
D.程序?qū)⑤敵龅?9行的異常信息

6、自定義異常類時(shí)塘秦,可以繼承的類是( )
A.Error B.Applet C.Exception及其子類 D.AssertionError

10讼渊、在異常處理中,將可能拋出異常的方法放在( )語(yǔ)句塊中

A.throws B.catch C.try D.finally

11尊剔、對(duì)于try{……}catch子句的排列方式爪幻,下列正確的一項(xiàng)是( )

A.子類異常在前,父類異常在后 B.父類異常在前,子類異常在后

C.只能有子類異常 D.父類異常與子類異常不能同時(shí)出現(xiàn)

12挨稿、使用catch(Exception e)的好處是( )

A.只會(huì)捕獲個(gè)別類型的異常

B.捕獲try語(yǔ)句塊中產(chǎn)生的所有類型的異常

C.忽略一些異常

D.執(zhí)行一些程序

13.請(qǐng)問(wèn)所有的異常類皆繼承哪一個(gè)類仇轻?( )

A.java.lang.Throwable   B.java.lang.Exception

C.java.lang.Error  D.java.io.Exception

14.對(duì)于已經(jīng)被定義過(guò)可能拋出異常的語(yǔ)句,在編程時(shí)( )奶甘。

A.必須使用try/catch語(yǔ)句處理異常篷店,或用throw將其拋出。

B.如果程序錯(cuò)誤臭家,必須使用 try/catch語(yǔ)句處理異常疲陕。

C.可以置之不理。

D.只能使用try/catch語(yǔ)句處理钉赁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹄殃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子你踩,更是在濱河造成了極大的恐慌诅岩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件带膜,死亡現(xiàn)場(chǎng)離奇詭異吩谦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)钱慢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門逮京,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人束莫,你說(shuō)我怎么就攤上這事懒棉。” “怎么了览绿?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵策严,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我饿敲,道長(zhǎng)妻导,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任怀各,我火速辦了婚禮倔韭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瓢对。我一直安慰自己寿酌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布硕蛹。 她就那樣靜靜地躺著醇疼,像睡著了一般硕并。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秧荆,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天倔毙,我揣著相機(jī)與錄音,去河邊找鬼乙濒。 笑死陕赃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的琉兜。 我是一名探鬼主播凯正,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼毙玻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼豌蟋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起桑滩,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梧疲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后运准,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幌氮,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年胁澳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了该互。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡韭畸,死狀恐怖宇智,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胰丁,我是刑警寧澤随橘,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站锦庸,受9級(jí)特大地震影響机蔗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜甘萧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一萝嘁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扬卷,春花似錦牙言、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钝鸽。三九已至,卻和暖如春庞钢,著一層夾襖步出監(jiān)牢的瞬間拔恰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工基括, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颜懊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓风皿,卻偏偏與公主長(zhǎng)得像河爹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子桐款,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Java的基本理念是“結(jié)構(gòu)不佳的代碼不能運(yùn)行”Dд!O蔽!6舯侄刽! 大成若缺,其用不弊朋凉。 大盈若沖州丹,其用不窮。 在這個(gè)世界不...
    Java幫幫閱讀 518評(píng)論 0 6
  • 是的杂彭,大貓病了…… 大貓終于招架不住墓毒,頭痛欲裂疼,倒下了…… 今天的最后一站——辦公室盖灸,拿u盤蚁鳖,計(jì)劃明天做電子版?zhèn)?..
    寒璐閱讀 122評(píng)論 0 0
  • 孔網(wǎng)懼盈齋書店閱讀 181評(píng)論 0 0
  • 作者:米悅豐 【嵌牛導(dǎo)讀】: 智能穿戴設(shè)備、智能家具赁炎、智能樓宇醉箕、智慧城市……等等一系列新概念的出現(xiàn),智能化在我們周...
    小米__閱讀 374評(píng)論 0 0