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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

java

java异常处理机制_Java的异常处理机制

發(fā)布時(shí)間:2025/3/15 java 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java异常处理机制_Java的异常处理机制 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Throwable 類是 Java 語(yǔ)言中所有錯(cuò)誤或異常的超類。只有當(dāng)對(duì)象是此類(或其子類之一)的實(shí)例時(shí),才能通過(guò) Java 虛擬機(jī)或者 Java 的 throw 語(yǔ)句拋出。類似地,只有此類或其子類之一才可以是 catch 子句中的參數(shù)類型。

Error

Error 是 Throwable 的子類,用于指示應(yīng)用程序不應(yīng)該試圖捕獲的嚴(yán)重問(wèn)題。Error 也叫系統(tǒng)級(jí)異常,它是為無(wú)法預(yù)計(jì)的,程序無(wú)法處理的異常錯(cuò)誤,表示運(yùn)行應(yīng)用程序過(guò)程中出現(xiàn)了較嚴(yán)重問(wèn)題。一般情況都是在JVM上出現(xiàn)了問(wèn)題。

在執(zhí)行該方法期間,無(wú)需在其 throws 子句中聲明可能拋出但是未能捕獲的 Error 的任何子類,因?yàn)檫@些錯(cuò)誤是不確定的不會(huì)重復(fù)出現(xiàn)的。

Error有如下常見(jiàn)且重要的子類:

  • AnnotationFormatError 當(dāng)注釋解析器試圖從類文件讀取注釋并確定注釋出現(xiàn)異常時(shí),拋出該錯(cuò)誤。
  • IOError 當(dāng)發(fā)生嚴(yán)重的 I/O 錯(cuò)誤時(shí),拋出此錯(cuò)誤。
  • ThreadDeath 調(diào)用 Thread 類中帶有零參數(shù)的 stop 方法時(shí),受害線程將拋出一個(gè) ThreadDeath 實(shí)例。 僅當(dāng)應(yīng)用程序在被異步終止后必須清除時(shí)才應(yīng)該捕獲這個(gè)類的實(shí)例。如果 ThreadDeath 被一個(gè)方法捕獲,那么將它重新拋出非常重要,因?yàn)檫@樣才能讓該線程真正終止。 如果沒(méi)有捕獲 ThreadDeath,則頂級(jí)錯(cuò)誤處理程序不會(huì)輸出消息。雖然 ThreadDeath 類是“正常出現(xiàn)”的,但它只能是 Error 的子類而不是 Exception 的子類,因?yàn)樵S多應(yīng)用程序捕獲所有出現(xiàn)的 Exception,然后又將其放棄。
  • LinkageError LinkageError 的子類指示一個(gè)類在一定程度上依賴于另一個(gè)類;但是,在編譯前一個(gè)類之后,后一個(gè)類發(fā)生了不相容的改變。它一共有7個(gè)直接子類。
  • VirtualMachineError 當(dāng) Java 虛擬機(jī)崩潰或用盡了它繼續(xù)操作所需的資源時(shí),拋出該錯(cuò)誤。子類有:InternalError (該異常指示 Java 虛擬機(jī)中出現(xiàn)一些意外的內(nèi)部錯(cuò)誤),OutOfMemoryError (因?yàn)閮?nèi)存溢出或沒(méi)有可用的內(nèi)存提供給垃圾回收器時(shí),Java 虛擬機(jī)無(wú)法分配一個(gè)對(duì)象,這時(shí)拋出該異常),StackOverflowError (當(dāng)應(yīng)用程序遞歸太深而發(fā)生堆棧溢出時(shí),拋出該錯(cuò)誤),UnknownError (當(dāng) Java 虛擬機(jī)中出現(xiàn)一個(gè)未知但嚴(yán)重的異常時(shí),拋出該錯(cuò)誤)。

Exception

同樣作為Throwable的子類,既然Error是系統(tǒng)級(jí)異常,與之對(duì)應(yīng)的Exception就是應(yīng)用級(jí)異常。這種異常通常都是可能預(yù)料到的,由應(yīng)用拋出該類異常,執(zhí)行方法時(shí)再捕獲該類異常。

Exception的直接子類有很多,大概有數(shù)十個(gè),我們將它的所有子類分為兩類:

  • 運(yùn)行時(shí)異常1,運(yùn)行時(shí)異常(RuntimeException)是那些可能在 Java 虛擬機(jī)正常運(yùn)行期間拋出的異常的超類。程序編譯時(shí)是不知道到底會(huì)不會(huì)觸發(fā)該異常的,只有程序運(yùn)行起來(lái)才知道。它的子類也有很多,例如有空指針異常(NullPointerException), 對(duì)象強(qiáng)制轉(zhuǎn)換異常(ClassCastException)等等。 2,因?yàn)檫\(yùn)行時(shí)異常的不確定性,所以對(duì)于程序中拋出的RuntimeException及其子類在程序執(zhí)行方法期間是不需要我們強(qiáng)制捕獲處理它的。 3,RuntimeException跟Error性質(zhì)上差不多,都是在程序運(yùn)行期間可能會(huì)產(chǎn)生的異常。但是Error是系統(tǒng)級(jí)的異常大都是JVM相關(guān)的異常,而RuntimeException則是應(yīng)用程序級(jí)別的異常。
  • 其他應(yīng)用異常1,其他應(yīng)用異常就是Exception的所有子類里除了RuntimeException外的異常,這些異常都是在執(zhí)行之前可預(yù)見(jiàn)的異常。例如IOException、SQLException等以及用戶自定義的Exception異常。 2,這些異常與RuntimeException不同的是編譯器強(qiáng)制要求必須捕獲處理他們,即如果程序某處拋出了異常,那么在執(zhí)行方法前一定要先捕獲異常。

捕獲異常

try{ // 可能會(huì)拋出異常的代碼}catch(Exception e){ // 捕獲異常的位置}finally{ // 無(wú)論有沒(méi)有拋出異常都會(huì)執(zhí)行的代碼}復(fù)制代碼
  • 在try 代碼塊中的語(yǔ)句一旦拋出異常后面未執(zhí)行的代碼將不會(huì)在執(zhí)行,直接跳轉(zhuǎn)到catch中。
  • 捕獲對(duì)應(yīng)異常catch 可以有很多個(gè),JVM會(huì)從第一個(gè)找起。盡量把子異常放在前面,如果你拋出的異常在它的父類后面就直接進(jìn)到父類異常里了。
  • 代碼塊finally 也會(huì)有不執(zhí)行的時(shí)候,如JVM 過(guò)早終止(調(diào)用 System.exit(int));在 finally 塊中拋出一個(gè)未處理的異常;計(jì)算機(jī)斷電、失火、或遭遇病毒攻擊。
  • 需要java學(xué)習(xí)路線圖的私信筆者“java”領(lǐng)取哦!另外喜歡這篇文章的可以給筆者點(diǎn)個(gè)贊,關(guān)注一下,每天都會(huì)分享Java相關(guān)文章!還有不定時(shí)的福利贈(zèng)送,包括整理的學(xué)習(xí)資料,面試題,源碼等~~

    總結(jié)

    以上是生活随笔為你收集整理的java异常处理机制_Java的异常处理机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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