五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

(轉載)Java異常分類及處理

2019-12-03 20:13 作者:觴翊の澤  | 我要投稿

地址:https://www.cnblogs.com/niceyoo/p/10585459.html

一、概念

如果某個方法不能按照正常的途徑完成任務,就可以通過另一種路徑退出方法。在這種情況下
會拋出一個封裝了錯誤信息的對象。此時,這個方法會立刻退出同時不返回任何值。另外,調用
這個方法的其他代碼也無法繼續(xù)執(zhí)行,異常處理機制會將代碼執(zhí)行交給異常處理器。

二、異常分類

Throwable 是 Java 語言中所有錯誤或異常的超類,在 Java 中只有 Throwable 類型的實例才可以被拋出(throw)或者捕獲(catch),它是異常處理機制的基本組成類型。
實例分為 Error 和 Exception 兩種。

2.1、Error

Error 類是指 java 運行時系統(tǒng)的內部錯誤和資源耗盡錯誤。應用程序不會拋出該類對象。如果
出現(xiàn)了這樣的錯誤,除了告知用戶,剩下的就是盡力使程序安全的終止。

2.2、Exception

Exception 又有兩個分支 , 一個是運行時異常 RuntimeException , 一 個是檢查異常 CheckedException。

RuntimeException 如 :NullPointerException 、 ClassCastException ;
CheckedException 如: I/O 錯誤導致的 IOException、SQLException。

RuntimeException 是那些可能在 Java 虛擬機正常運行期間拋出的異常的超類。 如果出現(xiàn) RuntimeException,那么一
定是程序員代碼書寫導致的錯誤.

CheckedException:一般是外部錯誤,這種異常都發(fā)生在編譯階段,Java 編譯器會強
制程序去捕獲此類異常,即會出現(xiàn)要求你把這段可能出現(xiàn)異常的程序進行 try catch,該類異常一
般包括幾個方面:

  1. 試圖在文件尾部讀取數(shù)據(jù)

  2. 試圖打開一個錯誤格式的 URL

  3. 試圖根據(jù)給定的字符串查找 class 對象,而這個字符串表示的類并不存在

三、異常的處理方式

3.1、不處理

遇到異常問題不進行具體處理,而是繼續(xù)拋給調用者 (throw,throws)
拋出異常有三種形式,一是 throw,再就是 throws,還有一種系統(tǒng)自動拋異常。

public?static?void?main(String[]?args)?{
????String?s?=?"abc";
????if(s.equals("abc"))?{
????????//?手動拋出一個數(shù)字格式化異常
????????throw?new?NumberFormatException();
????}?else?{
????????System.out.println(s);
????}
}

int?div(int?a,int?b)?throws?Exception{
????return?a/b;
}

3.2、處理

try catch 捕獲異常針對性處理方式

四、Throw 和 throws 的區(qū)別

throws 用在函數(shù)上,后面跟的是異常類,可以跟多個;

語法:(修飾符)(方法名)([參數(shù)列表])[throws(異常類)]{……}
public void doA(int a) throws Exception1,Exception3{……}

throw 用在函數(shù)內,后面跟的是異常對象。

throws E1,E2,E3只是告訴程序這個方法可能會拋出這些異常,方法的調用者可能要處理這些異常,而這些異常E1,E2,E3可能是該函數(shù)體產(chǎn)生的。
throw則是明確了這個地方要拋出這個異常。

結合來看:

void?doA(int?a)?throws?IOException,{
???try{
??????......
???}catch(Exception1?e){
??????throw?e;
???}catch(Exception2?e){
??????System.out.println("出錯了!");
???}
???if(a!=b)
??????throw?new??Exception3("自定義異常");
}

throws 用來聲明異常,讓調用者知道該功能可能會出現(xiàn)的問題(比如上方的 IO 異常),可以給出預先的處理方式;
throw 拋出具體的問題對象,執(zhí)行到 throw,功能就已經(jīng)結束了,跳轉到調用者,并將具體的問題對象拋給調用者。
也就是說 throw 語句獨立存在時,下面不要定義其他語句,因為執(zhí)行不到。

概括:
throws 表示出現(xiàn)異常的一種可能性,并不一定會發(fā)生這些異常;
throw 則是拋出了異常,執(zhí)行 throw 則一定拋出了某種異常對象。

五、總結

了解 Exception、Error 兩種異常的區(qū)別,面試可能會問。
區(qū)分 throws、throw使用維度。


(轉載)Java異常分類及處理的評論 (共 條)

分享到微博請遵守國家法律
崇明县| 云霄县| 富平县| 简阳市| 顺义区| 盐城市| 桦川县| 麻江县| 库伦旗| 永昌县| 清新县| 米脂县| 美姑县| 深泽县| 阿拉善右旗| 玉林市| 泾源县| 太和县| 色达县| 中牟县| 内江市| 巩留县| 鹿泉市| 乐清市| 临沧市| 友谊县| 宝鸡市| 连江县| 泗阳县| 上栗县| 贺州市| 滨海县| 金溪县| 城固县| 隆德县| 宕昌县| 平舆县| 巍山| 陇西县| 西盟| 响水县|