国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java異常體系

vvpvvp / 2038人閱讀

摘要:異常體系首先,標志這是一個異常。區分這兩類異常主要特性是是否受檢。運行時異常雖然可以不進行處理,但是可能導致線程終止或者應用終止。

在使用JdbcTemplate中queryForObject方法的時候拋出一個異常:

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

  queryForObject的內部邏輯是這樣的:使用queryForObject時,會查詢一個結果,當查詢中結果多余一個或者沒有都會拋出一個異常IncorrectResultSizeDataAccessException。這個向外拋出的異常為什么不需要我使用try-catch處理或者繼續向外拋出呢?下面的圖片展示這個異常的繼承結構。

Google之后認識到所有運行時異常都可以不向外拋出。為了更加快速的解決問題,決定對Java異常進行更深入的學習。

Java異常體系


  首先,Throwable標志這是一個異常。
  其次,Throwable有兩個子類分別是Error和Exception,Error表示的是JVM發生的異常,如內存溢出,這是應用自身程序本身無法處理的異常;而Exception則表示應用程序自身可以處理的異常。
  最后,Exception的子類分為兩類,一個是RuntimeException,另外就是其他繼承自Exception的異常,如IOException。區分這兩類異常主要特性是是否受檢。

什么是受檢異常,什么是非受檢異常?
  本質上,受檢異常指的是會受到Java 編譯器檢測的異常,也就是說當你的一個方法中有拋出一個受檢異常時,
你必須對它進行處理,使用try-catch或者向上拋出進行處理。非受檢異常指的是不會受到Java編譯器檢測的異常,
當你的一個方法中拋出了非受檢異常時,你不需要進行處理。
 
 Java意圖上使用非受檢異常來表示由于軟件開發人員導致的錯誤,如NullPointerException;而使用
受檢異常來表示一些用戶誤操作的錯誤,如IOException。“The Java Tutorial”告訴我們通常情況下我們
應該拋出受檢異常,而不要拋出非受檢異常。

  想一想,如果是來自外部的數據有錯誤,我們可以拋出異常來說明用戶傳入的參數有錯誤;而如果是開發人員導致的
錯誤,且我們開發人員自己都知道自己的代碼有異常,那直接改正不久好了,干嘛還要向外拋出呢!所以通常是不會
繼承非受檢異常的。

  運行時異常雖然可以不進行處理,但是可能導致線程終止或者應用終止。如果是非主線程,則由Thread.run()拋出異常后,線程終止。如果是主線程(即main方法)拋出異常,則應用終止。

有興趣可以將下面的代碼復制到編譯器中來檢測受檢異常和非受檢異常。

public class Main {
    public void caller() {
        callee();
    }

    public void callee() throws Exception{
        throw new Exception();
    }
}

上面的代碼中在調用callee方法的時候將編譯不過。

public class Main {
    public void caller() {
        callee();
    }

    public void callee(){
        throw new RuntimeException();
    }
}

上面的代碼將不會有任何告警。

參考:
Java 的 Checked 和 Unchecked Exception【譯】

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74786.html

相關文章

  • Java 異常實戰

    摘要:不過按照經驗來說,這類異常要么盡量避免,要么出現了就要做異常處理,從而保證程序的健壯性。業務是千變萬化,但是它們可能產生的異常處理方式是不會變化的,按照這個思路去做異常處理即可。 前言:說到異常體系,可能對于一些初入職場的老鐵會很頭痛,不能夠很清晰的描述異常是個什么情況。那么本文將通過打流水仗的方式給大家介紹一下工作中涉及的異常知識。首先能看到本文,說明也對異常是有了解的,所以文章開頭...

    libxd 評論0 收藏0
  • Java異常體系

    序 本文主要記錄java的異常體系 概覽 Exception showImg(https://segmentfault.com/img/bVtn8Z); 分checked exception以及unchecked exception(runtime exception) checked exception除runtime exception外的exception。 ReflectiveOpe...

    davidac 評論0 收藏0
  • 1、異常概述和繼承體系 2、原因及處理方式 3、運行時異常 4、重寫異常處理 5、Throwable

    摘要:案例演示該句運行時發生了數組索引越界異常,由于沒有處理異常,導致程序無法繼續執行,程序結束。用來進行某種異常的捕獲,實現對捕獲到的異常進行處理。運行時期異常一旦發生需要程序人員修改源代碼。 01異常的概述 * A: 異常的概述 * a:什么是異常 * Java代碼在運行時期發生的問題就是異常。 * b:異常類 * 在Java中,把異常信息...

    GT 評論0 收藏0
  • Java009-異常處理

    摘要:異常,可以有針對性的處理方式無論是錯誤還是異常,它們都有具體的子類體現每一個問題,它們的子類都有一個共性,就是都以父類名才作為子類的后綴名。特殊情況對應多個時,如果有父類的語句塊,一定要放在下面。聲明的原因是需要調用者對該異常進行處理。 異 常:★★★★異常:就是不正常。程序在運行時出現的不正常情況。其實就是程序中出現的問題。這個問題按照面向對象思想進行描述,并封裝成了對象。因為問題的...

    付倫 評論0 收藏0
  • java 異常學習

    摘要:因為是由虛擬機自動拋出并自動捕獲,所以又叫非檢查異常。多異常捕獲在之前,對多種的異常只能使用多個來進行捕獲。注意多種異常類型之間用豎線隔開。多重塊后面,最好再有個塊用來捕獲異常,防止遺漏。期待自己的異常進階。 異常的體系機構 Java提供了豐富的異常類,而這些異常類之間又有這嚴格的繼承關系。下面讓我們看一下Java中異常的體系結構。 showImg(https://segmentfau...

    gghyoo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<