日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2024/9/27 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java敏感异常是什么_java中的异常是什么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

Java將錯誤變成對象交給異常處理機制

Error(僅靠程序本身無法恢復的嚴重錯誤)

一般是環境的問題,JVM的問題,并非程序的問題;最典型的就是虛擬機中運行的程序過多,造成的虛擬機內存溢出,虛擬機錯誤,還有系統崩潰之類的,應用程序是無法處理此類錯誤的。Error不在我們調試代碼可以處理的范圍中。

AWTError

ThreadDeath

...? ...

Exception(由java應用程序拋出和處理的非嚴重型錯誤)

Checked異常(檢查時異常),程序必須處理的異常(代碼調用,調用方聲明有風險)

SQLException

ClassNotFoundException

......

例如文件調用:I/O 有可能找不到的風險

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

1.??? 拋出,繼續往上拋

2.??? 現場處理這個異常

運行時異常,不要求程序必須對它們做出處理(運行時才能拋出異常)

RuntimeException(運行時錯誤)

NullPointerException

對象沒有被初始化生成的

NumberFormatException

ArrayIndexOutOfBoundsException數組越界錯誤

......

ArithmeticExecption

數學異常(類似除零錯誤):

Java中的異常處理是通過5個關鍵字來實現的:

捕獲

try: 執行可能產生異常的代碼

Catch:

異常捕獲

Finally:

無論是否發生異常總能執行的代碼

拋出

Throw:

手動拋出異常

Throws:

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

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

1.程序正常運行(不經過catch):

2.程序發生異常,經過catch且異常匹配:

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

如果出現不能被catch那么程序就會報錯,將異常往上拋,拋給JVM。

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

這里的try中有多行代碼,可能出現的異常有多種:數學異常,String字符串的空指針異常,在try中如果出現了異常時,會在catch中尋找對應可以解決的catch塊,但是如果將exception放在三個catch的最前面,就會報錯,因為exception是所有異常的超類,出現異常必然會進入到exception中,后面的兩個catch就會失效了

使用throw和throws:

在java本身的語法中就是對異常執行拋出的動作,java本身的語法 會把異常一層一層的往上拋,方法中出現了異常,則會把異常拋給調用它的主函數,主函數無法解決,就會把異常再次往上拋出,最后拋到JVM導致JVM死掉。

使用throws拋出的運行時異常相當于提示調用者,該方法有風險,至于是否處理該風險,由調用者決定;如果throws拋出的是檢查時異常,那么調用者自己就必須在調用的時候進行處理(利用try ... catch),當然通過throws可以同時拋出多個異常.

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

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);

}

}

}

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

運行時異常:

捕獲:

特別提醒:在try... catch...? finally中 finally最好不省略,因為finally是保證程序是否發生異常,都必須執行的代碼(即使我們在try塊中強行return之后,finally中依然會執行),(例如我們在I/O流里面,必須做的關閉操作就應該放在finally中)||需要強調的是:唯一能終止finally執行的操作就是System.exit(0);及其它相關類似操作,這一類操作是直接終止程序的運行,關閉JVM。

如果在finally中發生異常的話,照樣也會程序中斷,因為沒有人處理這個異常。

拋出:

Throw表示手動拋出一個異常,throws是聲明該方法可能會拋出的異常(運行時異常調用者不用必須處理;只是知道這里會拋出這樣一個異常)

檢查時異常:

捕獲:

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

拋出:

如果拋出的是檢查時異常那么就必須被處理,要么在手動拋出的地方立馬用try?catch進行處理,要么繼續往上拋,拋給調用這個方法的方法或者主函數,如下例:

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。