日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java疯狂讲义读书笔记第十章

發(fā)布時(shí)間:2023/12/10 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java疯狂讲义读书笔记第十章 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • Java異常處理機(jī)制主要依賴于try,catch,finally,throw,throws五個(gè)關(guān)鍵字,try里面放置可能引發(fā)異常的代碼塊,catch后對(duì)應(yīng)異常處理的一個(gè)代碼塊,finally主用于回收在try里打開的物理資源,異常機(jī)制保證finall一定會(huì)被執(zhí)行。throws用于方法簽名中,聲明該方法可能拋出的異常,throw用于拋出一個(gè)實(shí)際的異常。

    只要執(zhí)行代碼出現(xiàn)了異常,系統(tǒng)就會(huì)自動(dòng)生成一個(gè)異常對(duì)象,如果沒有為這個(gè)異常定義cache塊,程序就在此退出。

  • 拋出異常:執(zhí)行try里代碼出現(xiàn)異常,系統(tǒng)自動(dòng)生成一個(gè)異常對(duì)象,該對(duì)象提交到運(yùn)行時(shí)環(huán)境的過程。

  • 捕獲異常:Java運(yùn)行時(shí)環(huán)境收到異常后,尋找處理該異常的catch塊,找到后交給catch處理的過程。父類異常的cache塊應(yīng)該在子異常后。
  • Java把所有非正常情況分為兩種:異常(Exception)和錯(cuò)誤(Error)。他們都繼承父類Throwable。

    IndexOutOfBoundsException // 數(shù)組越界異常 NumberFormatException // 數(shù)字格式化轉(zhuǎn)換異常,輸入的不是數(shù)字字符串 ArithmeticException // 算術(shù)異常,比如除0異常 NullPointerException // 空指針異常,引用變量沒有值
  • Java7提供多異常捕捉機(jī)制,一個(gè)catch可以響應(yīng)多個(gè)異常,多個(gè)異常之間用 | 隔開,捕捉多個(gè)異常時(shí),異常變量為隱式的final,所以不能重新賦值。
  • 訪問異常信息,訪問cache塊中異常對(duì)象的相關(guān)信息,通過訪問cache塊后異常形參獲得。

    getMessage(); // 返回描述異常的字符串 printStackTrace(); // 將該異常的跟蹤棧信息輸出到標(biāo)準(zhǔn)錯(cuò)誤輸出 printStackTrace(PrintStream s); // 將該異常的跟蹤棧信息輸出到指定輸出流 getStackTrace(); // 返回該異常的跟蹤棧信息
  • 程序在try里打開了一些物理資源,這些物理資源都必須顯示回收。finally塊用于回收在try里打開的物理資源。
  • Java的垃圾回收不會(huì)回收任何物理資源,只能回收堆內(nèi)存中對(duì)象所占用的內(nèi)存。
  • 不管是否try是否引發(fā)異常,cache是否被執(zhí)行,除非在try、catch塊中退出虛擬機(jī)(return也會(huì)執(zhí)行finally),否則finally總是會(huì)被執(zhí)行。
  • Java7提供自動(dòng)關(guān)閉資源的try,在try后緊跟一對(duì)圓括號(hào),括號(hào)里聲明、初始化一個(gè)或多個(gè)資源(這些資源類必須實(shí)現(xiàn)AutoCloseable或Closeable接口,必須實(shí)現(xiàn)close()方法)。try語句在該語句結(jié)束時(shí)自動(dòng)關(guān)閉這些資源。
  • Java的異常分為兩大類,Checked和Runtime異常。Checked異常在程序編譯時(shí)就會(huì)發(fā)生錯(cuò)誤,無法通過編譯。
  • 如果當(dāng)前方法不知道如何處理方法本身會(huì)引發(fā)的異常,則使用throws 聲明 拋出。讓上一級(jí)調(diào)用者處理。若main方法也無法處理則拋出給JVM虛擬機(jī),虛擬機(jī)會(huì)打印異常的跟蹤棧信息,并終止程序運(yùn)行。
  • 方法一旦使用throws拋出,本身就不需要使用try…catch來捕獲了。在調(diào)用該方法時(shí),要么放在try中捕獲,要么放在另一個(gè)帶throws聲明拋出的方法中。

  • 對(duì)于程序中的Checked異常,Java要求必須顯式捕獲并處理該異常,或者顯式聲明拋出該異常。
  • 如果早方法中顯示聲明拋出Checked異常,將會(huì)導(dǎo)致方法簽名與異常耦合,如果該方法是重寫父類的方法,則該方法拋出的異常還會(huì)受到被重寫方法拋出的異常限制。
  • 在程序中自行拋出異常,使用throw。

    throw與throws的比較

  • throws出現(xiàn)在方法函數(shù)頭;而throw出現(xiàn)在函數(shù)體。
  • throws表示出現(xiàn)異常的一種可能性,并不一定會(huì)發(fā)生這些異常;throw則是拋出了異常,執(zhí)行throw則一定拋出了某種異常對(duì)象。
  • 兩者都是消極處理異常的方式(這里的消極并不是說這種方式不好),只是拋出或者可能拋出異常,但是不會(huì)由函數(shù)去處理異常,真正的處理異常由函數(shù)的上層調(diào)用處理。
  • 自定義異常,繼承Exception。

  • public class MyException extends Exception{public MyException(String msg){super(msg);} }

    總結(jié)

    以上是生活随笔為你收集整理的Java疯狂讲义读书笔记第十章的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。