???學(xué)習(xí)的道路很枯燥,希望我們能并肩走下來(lái)!
編程真是一件很奇妙的東西。你只是淺嘗輒止,那么只會(huì)覺(jué)得枯燥乏味,像對(duì)待任務(wù)似的應(yīng)付它。但你如果深入探索,就會(huì)發(fā)現(xiàn)其中的奇妙,了解許多所不知道的原理。知識(shí)的力量讓你沉醉,甘愿深陷其中并發(fā)現(xiàn)寶藏。
本篇通過(guò)認(rèn)識(shí)異常了解一般程序中出現(xiàn)的異常,認(rèn)識(shí)異常的分類(lèi),正確的處理異常的方式,例如:拋出異常,捕獲異常等。如有錯(cuò)誤,請(qǐng)?jiān)谠u(píng)論區(qū)指正,讓我們一起交流,共同進(jìn)步!
本文開(kāi)始
1. 什么時(shí)異常?異常:程序執(zhí)行前沒(méi)有預(yù)料到的情況,程序報(bào)出的錯(cuò)誤;
之前所見(jiàn)的異常:
空指針異常,算術(shù)異常等
異常分為一般分為 運(yùn)行時(shí)異常 和 編譯時(shí)異常
錯(cuò)誤:遞歸死循環(huán)等問(wèn)題為錯(cuò)誤
異常大致分類(lèi)圖:
2.1 運(yùn)行時(shí)異常/非受查異常
運(yùn)行時(shí)異常(RunTimeException):錯(cuò)誤不會(huì)出現(xiàn)畫(huà)線部分,程序執(zhí)行時(shí)發(fā)生的異常;
例如: 空指針異常,數(shù)組越界異常等
public static void main(String[] args) {
int[] arr = null;
System.out.println(arr.length); // 空指針異常
System.out.println(arr[5]); // 數(shù)組越界異常
System.out.println(2/0); // 算數(shù)異常
}
代碼異常報(bào)錯(cuò)示范:
2.2 編譯時(shí)異常/受查異常
編譯時(shí)異常(Checked Exception):錯(cuò)誤部分會(huì)出現(xiàn)畫(huà)線標(biāo)注,提醒異常,編譯時(shí)發(fā)生的異常;
【注】有編譯時(shí)異常,必須處理,否則無(wú)法編譯;
例如:克隆
異常代碼示范:
class Student implements Cloneable{
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class Main {
public static void main(String[] args) {
Student student = new Student();
Student student1 = (Student)student.clone();
}
}
編譯時(shí)異常:
3. 處理異常
異常關(guān)鍵字:throw(拋出時(shí)使用),throws(聲明異常),try和catch,finally(處理異常時(shí)使用)
3.1 拋出異常拋出異常使用關(guān)鍵字:throw
當(dāng)滿(mǎn)足什么條件下,直接拋出異常;拋出異常指我們知道代碼可能發(fā)生異常,及時(shí)拋出,提醒使用者更改;
3.2 聲明異常
異??梢岳斫鉃榫哂袀鬟f性,如果不處理異常,仍會(huì)報(bào)錯(cuò);
使用關(guān)鍵字:throws聲明
聲明異常后,是知道有異常,但是如果不處理,還是不能編譯;
聲明異常只是知道該部分可能存在異常,如果不處理會(huì)傳遞給后面的代碼,都只聲明不處理,最后會(huì)交給JVM處理,產(chǎn)生異常錯(cuò)誤;
3.3 try catch處理異常
代碼格式:
public static void main(String[] args) {
try {
//可能產(chǎn)生異常的代碼
System.out.println(4/0);
} catch (RuntimeException e) { //括號(hào)中存放什么異常
//處理異常
e.printStackTrace(); // 打印產(chǎn)生錯(cuò)誤的信息 : 紅色字體部分如下圖
System.out.println("異常的信息");
}
// 寫(xiě)正常的代碼
System.out.println("正常的代碼");
}
【注】異常處理完成后,正常的代碼可以執(zhí)行,不處理,報(bào)異常后的代碼都不會(huì)執(zhí)行;
1.catch: 可寫(xiě)多個(gè)catch,catch的順序不影響異常的捕獲;
2.多個(gè)異常情況下,先執(zhí)行那個(gè)程序(代碼),先捕獲那個(gè)異常;(與catch無(wú)關(guān))
finally: try中是否拋出異常,finally中的代碼都會(huì)執(zhí)行;
一般用于資源釋放;
try {
//可能產(chǎn)生異常的代碼
} catch (RuntimeException e) { //括號(hào)中存放什么異常
//處理異常
e.printStackTrace();
} finally {
System.out.println("finall一般用于資源釋放");
}
System.out.println("正常的代碼");
???各位讀友,本篇分享到內(nèi)容如果對(duì)你有幫助給個(gè)👍贊鼓勵(lì)一下吧!!
感謝每一位一起走到這的伙伴,我們可以一起交流進(jìn)步!??!一起加油吧!??!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文標(biāo)題:異常的認(rèn)識(shí)-(java)-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://bm7419.com/article48/dpdpep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶(hù)體驗(yàn)、關(guān)鍵詞優(yōu)化、服務(wù)器托管、手機(jī)網(wǎng)站建設(shè)、微信小程序、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容