throw與throw的區別


Throwable 是所有 Java 程序中錯誤處理的父類 ,有兩種資類: Error 和 Exception 。
Error :表示由 JVM 所偵測到的無法預期的錯誤,由於這是屬於 JVM 層次的嚴重錯誤 ,導致 JVM 無法繼續執行,因此,這是不可捕捉到的,無法采取任何恢復的操作,頂多只能顯示錯誤信息。
Exception :表示可恢復的例外,這是可捕捉到的。
Java 提供了兩類主要的異常 :runtime exception 和 checked exception
。 checked 異常也就是我們經常遇到的 IO 異常,以及 SQL 異常都是這種異常。 對於這種異常, JAVA 編譯器強制要求我們必需對出現的這些異常進行 catch 。所以,面對這種異常不管我們是否願意,只能自己去寫一大堆 catch 塊去處理可能的異常,而且是必須的。
但是另外一種異常: runtime exception ,也稱運行時異常,我們可以不處理。當出現這樣的異常時,總是由虛擬機 接管。比如:我們從來沒有人去處理過 NullPointerException 異常,它就是運行時異常,並且這種異常還是最常見的異常之一。
出現運行時異常后,系統會把異常一直往上層拋,一直遇到處理代碼。如果沒有處理塊,到最上層,如果是多線程就由 Thread.run() 拋出 ,如果是單線程就被 main() 拋出 。拋出之后,如果是線程,這個線程也就退出了。如果是主程序拋出的異常,那么這整個程序也就退出了。運行時異常是 Exception 的子類,也有一般異常的特點,是可以被 Catch 塊處理的。只不過往往我們不對他處理罷了。也就是說,你如果不對運行時異常進行處理,那么出現運行時異常之后,要么是線程中止,要么是主程序終止。
如果不想終止,則必須撲捉所有的運行時異常,決不讓這個處理線程退出。隊列里面出現異常數據了,正常的處理應該是把異常數據舍棄,然后記錄日志。不應該由於異常數據而影響下面對正常數據的處理。 在這個場景這樣處理可能是一個比較好的應用,但並不代表在所有的場景你都應該如此。如果在其它場景,遇到了一些錯誤,如果退出程序比較好,這時你就可以不太理會運行時異常 ,或者是通過對異常的處理顯式的控制程序退出。
異常處理的目標之一就是為了把程序從異常中恢復出來 ,哈哈

用法:

1、throws關鍵字通常被應用在聲明方法時(放在方法(函數)的大括號前),用來指定可能拋出的異常。多個異常可以使用逗號隔開。當在主函數中調用該方法時,如果發生異常,就會將異常拋給指定異常對象,必須使用try—catch語句。

 

2、throw關鍵字通常用在方法體中,並且拋出一個異常對象。程序在執行到throw語句時立即停止,它后面的語句都不執行。通過throw拋出異常后,如果想在上一級代碼中來捕獲並處理異常,則需要在拋出異常的方法中使用throws關鍵字在方法聲明中指明要跑出的異常;如果要捕捉throw拋出的異常,則必須使用try—catch語句。

throw,throws使用注意點 :
1.throw關鍵字用於方法里面,throws用於方法的聲明上。
2.throw關鍵字用於方法內部拋出異常,throws用於方法聲明上拋出異常。
3.throw關鍵字后面只能有一個異常,throws 可以聲明多個異常。

拋出異常的使用注意點:
1.如果你在方法中拋出了一個異常對象,就必須在方法上聲明這個異常的拋出
2.如果一個方法調用拋出異常的方法,調用者就必須處理拋出的這個異常。
3.如果一個方法中拋出了異常,那么throw 后面的的代碼就不會再執行了。
4.在一種情況下只能拋出一種異常。(也就是說一個catch對應一種異常)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM