JAVA的異尺只ⅲ總結(jié)

異常和錯誤之間的區(qū)別

首先,我們需要了解異常和錯誤之間的區(qū)別

  • Error表示系統(tǒng)致命的錯誤计呈,程序是無法處理這些錯誤的砰诵,即:Error類是指與JVM相關(guān)的問題,比如:系統(tǒng)崩潰捌显,虛擬機錯誤茁彭,內(nèi)存溢出等
  • Exception是指程序可以捕獲并處理的異常,并且程序可能會被恢復(fù)扶歪。

異常又分為運行時異常編譯時異常

異常繼承體系
運行時異常一般都屬于程序員犯錯
其它都是編譯時異常理肺,編譯時就會報錯

異常的處理方法

1、交給jvm處理
JVM異常處理方式
java收到問題時有兩種處理方式1.自己處理善镰,然后繼續(xù)運行(后面會介紹)2.自己沒有辦法處理妹萨,交給jvm來處理
JVM有一個默認的異常處理機制將異常處理
并將該異常的名稱,異常信息炫欺,異常出現(xiàn)的位置給打印在控制臺上乎完,同時停止運行

例:

public static void main(String[] args) {
    int a = 10 / 0;
    System.out.println(a)品洛;
  }

10/0違背了算法運算法則树姨,拋出異常。
拋出的異常是一個對象桥状,New ArithmeticException(“/by zero”) 把這個異常對象返回帽揪。 此時想把異常對象賦值給a。
a是一個int類型不能接收辅斟,main方法解決不了转晰。交給jvm來處理,jvm就將該異常在控制臺打印程序終止士飒。

2查邢、自己處理
自己 處理異常兩種方式
1.try…catch…finally
2.throws

try..catch處理異常的基本格式

try{ 
    可能出現(xiàn)理異常的代碼 
}catch(異常類型){

}finally{
   處理完異常最后做的處理
}
  • Try:用來檢測異常
  • Catch:用來捕獲異常
  • Finally:釋放資源

例:

public static void main(String[] args) {
    try {
        int a = 10 / 0;
        System.out.println(a);
    } catch (ArithmeticException a) {
        System.out.println("除數(shù)不能為0!");
    }
}

10/0;會創(chuàng)建一個異常對象New ArithmeticException(“/by zero”)变汪。
賦值給a,接收不了蚁趁,此時就把異常對象傳給catch當(dāng)中的參數(shù)a裙盾。
能夠接收,就會執(zhí)行catch當(dāng)中的內(nèi)容,程序也沒有終止番官。


public void  setAge(int age) throws {
    if(age > 0 && age <= 150){
        this.age = age;
    }else {
        // 自己手動拋出一個運行時異常
        throw  new RuntimeException("年齡非法");
    }
}

拋出了一個編譯時異常庐完,必須得要有人處理。如果不處理徘熔,必須繼續(xù)往上拋门躯,拋給方法調(diào)用者。


此時由于setAge內(nèi)部拋出了一個異常酷师,在調(diào)用該方法時必須得要處理讶凉,如果不處理就會報錯。還有一種方法自己不處理山孔,繼續(xù)往上拋出懂讯。

即:


throwe2.png

此時自己沒有去處理,又往上拋出台颠,給了main方法褐望。
main方法的調(diào)用者是jvm,jvm內(nèi)部有一個異常處理,會把異常信息打印在控制臺上串前,終于程序執(zhí)行瘫里。

常見的異常類型

  • ArithmeticException 數(shù)學(xué)運算異常
 int a = 10 / 0;
 System.out.println(a)荡碾;
  • ArrayIndexOutOfBoundsException 數(shù)組下標(biāo)越界異常
//定義數(shù)組的長度為2 但是查找的是第三4個所以會出現(xiàn)數(shù)組下標(biāo)越界異常 
int[] a = new int[2]; 
System.out.println(a[3]);
  • NumberFormatException 字符串轉(zhuǎn)換為數(shù)字異常
String str = "123a2";
int a = Integer.valueOf(str);
System.out.println(a);
  • ClassCastException 數(shù)據(jù)類型轉(zhuǎn)換異常
// 當(dāng)試圖將對某個對象強制執(zhí)行向下轉(zhuǎn)型谨读,但該對象又不可轉(zhuǎn)換又不可轉(zhuǎn)換為其子類的實例時將引發(fā)該異常
Object object = new Object();
String str = (String) object;
  • NullPointerException 空指針異常
// 當(dāng)給字符串一個null才會出現(xiàn)空指針異常
String str = null;
if (str.equals(null)) {
    System.out.println("我是空指針異常");
}
  • ClassNotFoundException 指定的類不存在

這里主要考慮一下類的名稱和路徑是否正確即可,通常都是程序試圖通過字符串來加載某個類時可能引發(fā) 異常

  • IllegalArgumentException 方法的參數(shù)錯誤

舉個例子:getUser(int username)方法玩荠,不允許傳入空字符串或者null漆腌。但是有個調(diào)用的方法,沒做檢查阶冈,傳入了null或者空字符串闷尿,這時候getUser方法就應(yīng)該要拋出IllegalArgumentException告訴調(diào)用者:hi!這個參數(shù)不能為empty或者null女坑。

  • IllegalAccessException沒有訪問權(quán)限

當(dāng)應(yīng)用程序要調(diào)用一個類填具,但當(dāng)前的方法即沒有對該類的訪問權(quán)限便會出現(xiàn)這個異常。對程序中用了Package的情況下要注意這個異常.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匆骗,一起剝皮案震驚了整個濱河市劳景,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碉就,老刑警劉巖盟广,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瓮钥,居然都是意外死亡筋量,警方通過查閱死者的電腦和手機烹吵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桨武,“玉大人肋拔,你說我怎么就攤上這事⊙剿幔” “怎么了凉蜂?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長性誉。 經(jīng)常有香客問我窿吩,道長,這世上最難降的妖魔是什么艾栋? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任爆存,我火速辦了婚禮,結(jié)果婚禮上蝗砾,老公的妹妹穿的比我還像新娘先较。我一直安慰自己,他們只是感情好悼粮,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布闲勺。 她就那樣靜靜地躺著,像睡著了一般扣猫。 火紅的嫁衣襯著肌膚如雪菜循。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天申尤,我揣著相機與錄音癌幕,去河邊找鬼。 笑死昧穿,一個胖子當(dāng)著我的面吹牛勺远,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播时鸵,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼胶逢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饰潜?” 一聲冷哼從身側(cè)響起初坠,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彭雾,沒想到半個月后碟刺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡薯酝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年半沽,在試婚紗的時候發(fā)現(xiàn)自己被綠了身诺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡抄囚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出橄务,到底是詐尸還是另有隱情幔托,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布蜂挪,位于F島的核電站重挑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏棠涮。R本人自食惡果不足惜谬哀,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望严肪。 院中可真熱鬧史煎,春花似錦、人聲如沸驳糯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酝枢。三九已至恬偷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帘睦,已是汗流浹背袍患。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留竣付,地道東北人诡延。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像卑笨,于是被迫代替她去往敵國和親孕暇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351