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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java异常简单介绍

發布時間:2024/9/30 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java异常简单介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文收錄在豬哥GitHub:https://github.com/pig6/Java 中,本項目收集一線大廠面試、實戰、Java學習路線等。

一、異常產生的原理

JVM針對程序運行監測出的異常創建個異常對象,對象包含了異常產生的:內容、原因、位置。根據程序邏輯將異常對象層層拋出或者處理。

二、Throwable體系

1.Error

錯誤Error一般是指java虛擬機相關的問題,如系統崩潰、虛擬機出錯誤、動態鏈接失敗等,這種錯誤無法恢復或不可能捕獲,將導致應用程序中斷,通常應用程序無法處理這些錯誤,因此應用程序不應該捕獲Error對象,也無須在其throws子句中聲明該方法拋出任何Error或其子類。

  • VirtualMachineError
    • OutOfMemoryError
    • StackOverflowError
  • LinkageError
    • NoClassDefFoundError
    • NoSuchMethodError
  • 。。。
  • 2.Exception

    1> 運行時異常 RuntimeException:是指“可以避免的異常”,如 null引用異常,這類異常都是由程序內部原因造成的,是可以避免的,考驗開發的嚴謹性,因此這個問題是我們作為一名開發必須要避免發生的,再大的公司每年總會有幾次事故是因為NPE導致的,我們如果因為這種問題被通報了就是很尷尬的事情了(對生產環境一定要有足夠的敬畏心啊)。

    常見的運行時異常有以下幾種:

    • NullPointerException
    • ClassCastExecption
    • ArithmeticException
    • IndexOutOfBoundsException
    • ClassNotFoundException

    2> 非運行時異常:代表“無法避免的異常” 如io異常,往往這類異常是由于外部原因造成的,程序本身無法保證他們不發生,所以這類異常必須捕獲,這就是我們在使用io資源或者操作線程比如sleep的時候必須要捕獲或者拋出的原因。

    常見的有:

    • IOException
    • InterruptedException
    • SQLException
    • 自定義的非RuntimeException

    3.Check And UnCheck

    1>CheckedException:等價于非運行時異常,要么捕獲,要么拋出,否則編譯無法通過。代表“無法避免的異?!?如io異常 往往這類異常是由于外部原因造成的,程序本身無法保證他們不發生
    2>UnCheckedException:包括:Error&運行時異常

    三、方法

    • toString:異常類信息+異常信息描述
    • getMessage:異常信息描述
    • printStackTrace:最常用打印完整的錯誤堆棧信息

    四、catch還是throw

    通常應該捕獲那些知道如何處理的異常,而將那些不知道如何處理的異常進行傳遞。如果想傳遞一個異常,就必須在方法的聲明中添加一個throws說明符,以便告知調用者這個方法可能會拋出異常。

    五、finally

  • 無論是否出現異常都會執行
  • 必須與try一起使用
  • 注意:finally中有return語句永遠返回finally中的return,try塊中的return不會生效
  • 六、其他

  • 如果父類拋出了多個異常,子類重寫父類方法的時候,拋出和父類相同的異常//是父類異常的子類//或者不拋出
  • 父類方法沒有拋出異常,子類重寫父類該方法的時候也不可以拋出異常。此時子類產生該異常,只能捕獲處理,不能聲明拋出
  • 使用習慣:
    • 不要丟棄異常,捕獲異常后需要進行相關處理。如果用戶覺得不能很好地處理該異常,就讓它繼續傳播,傳到別的地方去處理,或者把一個低級的異常轉換成應用級的異常,重新拋出
    • catch語句應該指定具體的異常類型。不能把不該捕獲的異常也捕獲了
    • 在finally里面釋放資源。如果finally里面也會拋出異常,也一樣需要使用try…catch處理
    • 不要把大量的代碼塞在try…catch塊里面,分離各個可能出現異常的語句并分別捕獲異常
  • 遺留問題: 編碼中是該捕獲Exception還是Throwable呢?歡迎評論區交流!!

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的Java异常简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。