日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java敏感异常是什么_java中的异常是什么?

發(fā)布時(shí)間:2024/9/27 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java敏感异常是什么_java中的异常是什么? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Throwable(所有error和exception的父類:超類)

Java將錯(cuò)誤變成對(duì)象交給異常處理機(jī)制

Error(僅靠程序本身無法恢復(fù)的嚴(yán)重錯(cuò)誤)

一般是環(huán)境的問題,JVM的問題,并非程序的問題;最典型的就是虛擬機(jī)中運(yùn)行的程序過多,造成的虛擬機(jī)內(nèi)存溢出,虛擬機(jī)錯(cuò)誤,還有系統(tǒng)崩潰之類的,應(yīng)用程序是無法處理此類錯(cuò)誤的。Error不在我們調(diào)試代碼可以處理的范圍中。

AWTError

ThreadDeath

...? ...

Exception(由java應(yīng)用程序拋出和處理的非嚴(yán)重型錯(cuò)誤)

Checked異常(檢查時(shí)異常),程序必須處理的異常(代碼調(diào)用,調(diào)用方聲明有風(fēng)險(xiǎn))

SQLException

ClassNotFoundException

......

例如文件調(diào)用:I/O 有可能找不到的風(fēng)險(xiǎn)

對(duì)于以上的文件讀取可能發(fā)生的異常我們有兩種處理方式:

1.??? 拋出,繼續(xù)往上拋

2.??? 現(xiàn)場(chǎng)處理這個(gè)異常

運(yùn)行時(shí)異常,不要求程序必須對(duì)它們做出處理(運(yùn)行時(shí)才能拋出異常)

RuntimeException(運(yùn)行時(shí)錯(cuò)誤)

NullPointerException

對(duì)象沒有被初始化生成的

NumberFormatException

ArrayIndexOutOfBoundsException數(shù)組越界錯(cuò)誤

......

ArithmeticExecption

數(shù)學(xué)異常(類似除零錯(cuò)誤):

Java中的異常處理是通過5個(gè)關(guān)鍵字來實(shí)現(xiàn)的:

捕獲

try: 執(zhí)行可能產(chǎn)生異常的代碼

Catch:

異常捕獲

Finally:

無論是否發(fā)生異常總能執(zhí)行的代碼

拋出

Throw:

手動(dòng)拋出異常

Throws:

聲明方法可能要拋出的各種異常

使用try、catch、finally的三種情況:

1.程序正常運(yùn)行(不經(jīng)過catch):

2.程序發(fā)生異常,經(jīng)過catch且異常匹配:

3.程序發(fā)生異常,但是不能被catch和catch的不匹配:

如果出現(xiàn)不能被catch那么程序就會(huì)報(bào)錯(cuò),將異常往上拋,拋給JVM。

上面講的是一段代碼只有一種異常的最簡單的情況;更多的時(shí)候一段代碼不止一種異常:

這里的try中有多行代碼,可能出現(xiàn)的異常有多種:數(shù)學(xué)異常,String字符串的空指針異常,在try中如果出現(xiàn)了異常時(shí),會(huì)在catch中尋找對(duì)應(yīng)可以解決的catch塊,但是如果將exception放在三個(gè)catch的最前面,就會(huì)報(bào)錯(cuò),因?yàn)閑xception是所有異常的超類,出現(xiàn)異常必然會(huì)進(jìn)入到exception中,后面的兩個(gè)catch就會(huì)失效了

使用throw和throws:

在java本身的語法中就是對(duì)異常執(zhí)行拋出的動(dòng)作,java本身的語法 會(huì)把異常一層一層的往上拋,方法中出現(xiàn)了異常,則會(huì)把異常拋給調(diào)用它的主函數(shù),主函數(shù)無法解決,就會(huì)把異常再次往上拋出,最后拋到JVM導(dǎo)致JVM死掉。

使用throws拋出的運(yùn)行時(shí)異常相當(dāng)于提示調(diào)用者,該方法有風(fēng)險(xiǎn),至于是否處理該風(fēng)險(xiǎn),由調(diào)用者決定;如果throws拋出的是檢查時(shí)異常,那么調(diào)用者自己就必須在調(diào)用的時(shí)候進(jìn)行處理(利用try ... catch),當(dāng)然通過throws可以同時(shí)拋出多個(gè)異常.

------------------------------異常案例------------------------------------

packagejavaexception;

publicclassExceptionTest1{

publicstaticvoidmain(String[]args){

Workerworker=newWorker();

try{

worker.work(11);

}catch(Exceptione){

Doctordoctor=newDoctor();

try{

doctor.cure(worker);

System.out.println("治好了");

}catch(Exceptione1){

System.out.println("die");

}

}

}

}

classWorker{

privatebooleanalive=true;

publicbooleanisAlive(){

returnalive;

}

publicvoidsetAlive(booleanalive){

this.alive=alive;

}

//工作的方法

publicvoidwork(intcount)throwsException{

if(count>10){

thrownewException("生病");

}else{

System.out.println("正常工作");

}

}

}

classDoctor{

publicvoidcure(Workerworker)throwsException{

intt=(int)(Math.random()*10000);

if(t==4512){

worker.setAlive(false);

thrownewException("death");

}else{

worker.setAlive(true);

}

}

}

--------------------------------------------

運(yùn)行時(shí)異常:

捕獲:

特別提醒:在try... catch...? finally中 finally最好不省略,因?yàn)閒inally是保證程序是否發(fā)生異常,都必須執(zhí)行的代碼(即使我們?cè)趖ry塊中強(qiáng)行return之后,finally中依然會(huì)執(zhí)行),(例如我們?cè)贗/O流里面,必須做的關(guān)閉操作就應(yīng)該放在finally中)||需要強(qiáng)調(diào)的是:唯一能終止finally執(zhí)行的操作就是System.exit(0);及其它相關(guān)類似操作,這一類操作是直接終止程序的運(yùn)行,關(guān)閉JVM。

如果在finally中發(fā)生異常的話,照樣也會(huì)程序中斷,因?yàn)闆]有人處理這個(gè)異常。

拋出:

Throw表示手動(dòng)拋出一個(gè)異常,throws是聲明該方法可能會(huì)拋出的異常(運(yùn)行時(shí)異常調(diào)用者不用必須處理;只是知道這里會(huì)拋出這樣一個(gè)異常)

檢查時(shí)異常:

捕獲:

printStackTrace是打印異常堆棧,但是一般我們不建議打印異常堆棧(IDE工具里JVM默認(rèn)生成的),具體問題具體處理,一層一層的打印堆棧是比較耗性能的。

拋出:

如果拋出的是檢查時(shí)異常那么就必須被處理,要么在手動(dòng)拋出的地方立馬用try?catch進(jìn)行處理,要么繼續(xù)往上拋,拋給調(diào)用這個(gè)方法的方法或者主函數(shù),如下例:

總結(jié)

以上是生活随笔為你收集整理的java敏感异常是什么_java中的异常是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。