1. 程式人生 > >Effective Java之對可恢復的情況使用受檢異常,對程式設計錯誤使用執行時異常(五十八)

Effective Java之對可恢復的情況使用受檢異常,對程式設計錯誤使用執行時異常(五十八)

java將所有的錯誤封裝為一個物件,其根本父類為Throwable, Throwable有兩個子類:Error和Exception。
這裡寫圖片描述

異常分成三種結構

1.錯誤:Error是Throwable 的子類,用於指示合理的應用程式不應該試圖捕獲的嚴重問題。
在執行該方法期間,無需在其 throws 子句中宣告可能丟擲但是未能捕獲的 Error的任何子類,因為這些錯誤可能是再也不會發生的異常條件。
大多數這樣的錯誤都是異常條件。

2.執行時異常:RuntimeException是那些可能在 Java 虛擬機器正常執行期間丟擲的異常的超類。
可能在執行方法期間丟擲但未被捕獲的RuntimeException 的任何子類都無需在 throws 子句中進行宣告。它是Exception的子類。

執行時異常和錯誤統稱為未受檢結構,執行時異常又叫未受檢異常
未受檢結構的行為都是等同的,都是不需要也不應該丟擲的,因為如果程式丟擲了未受檢異常或者錯誤,說明是不可恢復的異常,繼續下去有害無益。
但是,他們的區別是runtimeException一般是程式設計錯誤,error一般是系統的錯誤

3.受檢異常:Exception類及其子類是 Throwable 的一種形式,它指出了合理的應用程式想要捕獲的條件。

定義方法時必須宣告所有可能會丟擲的exception; 在呼叫這個方法時,必須捕獲它的checked exception,不然就得把它的exception傳遞下去;exception是從java.lang.Exception類衍生出來的。例如:IOException,SQLException就屬於Exception

相關推薦

Effective Java恢復情況使用受檢異常程式設計錯誤使用執行異常()

java將所有的錯誤封裝為一個物件,其根本父類為Throwable, Throwable有兩個子類:Error和Exception。 異常分成三種結構 1.錯誤:Error是Throwable 的子類,用於指示合理的應用程式不應該試圖捕獲的嚴重問題。

恢復情況使用受檢異常程式設計錯誤使用執行異常

對於異常,我們知道,基類為 Throwable,它有兩個子類,Exception 和 Error,Exception 通常被稱為異常, Error被稱為錯誤。Exception異常又分為兩種,一種是受檢異常(checkedexception) ,另一種是執行時異常(runtime exceptio

恢復情況使用受檢異常程式設計錯誤使用執行異常

    Java程式設計語言提供了三種可丟擲結構:受檢的異常(checked exception)、執行時異常(run-time exception)和錯誤(error)。關於什麼時候適合使用哪種可丟擲結構,程式設計師中間存在一些困惑。雖然這項決定並不總是那麼清晰,但還是有些

【讀書筆記 - Effective Java】05. 避免創建不必要的

auto ive effective zone 如果 方式 一次 body 安全 1. 如果對象是不可變的(immutable),它就始終可以被重用。 (1) 特別是String類型的對象。 String str1 = new String("str"); // 創建許多

Effective Java讀書筆記】創建和銷毀象(一):考慮使用靜態工廠方法代替構造器

返回對象 boolean 簡化 將不 其他 種類型 bigint color pre 類可以提供一個靜態方法,返回類的一個靜態實例,如Boolean包裝類的一個獲取實例的靜態方法 1 public static Boolean valueOf(boolean b) { 2

Effective Java 3rd 條目27 消除非受檢警告

當你用泛型程式設計時,你將會看見許多編譯器警告:非受檢強轉警告、非受檢方法呼叫警告、非受檢引數化vararg型別警告和非受檢轉換警告。你多熟悉泛型一些,你將獲得更少警告,但是不要期待這些新程式碼乾淨利索地編譯。 許多非受檢警告容易消除。例如,假設你不慎編寫如下宣告: Set<L

Effective Java謹慎地覆蓋clone(一)

Clone提供一種語言之外的機制:無需呼叫構造器就可以建立物件。 它的通用約定非常弱: 建立和返回該物件的一個拷貝。這個拷貝的精確含義取決於該物件的類。一般含義是,對於任何物件x,表示式x.clone() != x 將會是true,並且,表示式x.clone

Effective Java靜態工廠代替構造器(一)

優勢1:它們有名稱,所以在多個構造器時,能夠根據靜態工廠的方法的名稱找到哪個構造器。 優勢2:能夠實現單例模式,不必在每次呼叫重新建立新物件。 優勢3:當建立引數化引數例項時,使用靜態工廠方法更加簡單。 優勢4:它們可以返回原返回型別的任何子物件。 書中

Effective Java避免建立不必要的物件()

1.對於不可變類(immutable),他始終可以被重用。 如:String類 String s = new String(“string”); 這種方法建立了兩個String物件,因為傳入String構造器的引數本身就是一個String例項,new再建立

JavaEffective Java 中文版 第2版》學習筆記 遇到多個構造器要考慮用構建器

fec 利用 客戶端代碼 except car beans pri 很好 種類   靜態工廠和構造器有個共同的局限性:它們都不能很好地擴展到大量的可選參數。   當一個類中有若幹個必選屬性和多個可選屬性時,采用重疊構造器模式、JavaBeans模式或者Builder模式,但

java ssl 使用不同的加密套件性能影響很大

color 可能 with 左右 cdh ecdh 使用 設置 測試 一直以來都是使用java默認的【加密套件】來處理ssl請求,突然有一天我嘗試顯式的設置了一組加密套件後,發現圖片顯示的速度明顯快了一倍左右。 經過使用幾組不同的加密套件測試後,發現使用 TLS_ECDHE

Java執行異常與編譯異常區別

Java中用2種方法處理異常: 1.在發生異常的地方直接處理; 2.將異常拋給呼叫者,讓呼叫者處理。 Java異常可分為3種:   (1)編譯時異常:Java.lang.Exception   (2)執行期異常:Java.lang.RuntimeException   (3)

JAVA父”也逃不過年齡歧視普通程式設計師還能怎麼辦?

他在卡內基梅隆大學攻讀計算機博士學位時,他編寫了多處理器版本的Unix作業系統,是JAVA程式語言的創始人,他就是詹姆斯·高斯林。 隨著網際網路的普及,Java成為全球流行的開發語言。年過花甲的Java之父在Facebook上發表了他所遭遇的年齡歧視。 他曾在面試的時候被HR告知,“通

JAVA字串轉換成首字母大寫其餘小寫

package yu;public class Main {public static void main(String[] args) {String str="abcdefgHIJK";//定義一串字元String str1=str.substring(0, 1).toU

Java尋找1-10000以內的質數速度大比拼

方法一:兩次的for迴圈中,i%j跟j的每個數值進行了比較,速度很慢 package com.huaxin; public class TestPrimeNum { public static void main(String[] args){ //方法一

java異常執行異常和非執行異常

RuntimeException RunntimeException的子類: ClassCastException 多型中,可以使用Instanceof 判斷,進行規避

李愬雪夜襲蔡州:挽救唐朝國祚的關鍵戰(先示弱於敵軍,對降將攻心為上、以誠待人然後逐步收集情報最後出奇兵奇襲。但出奇兵也要有預案否則會被兩面夾擊。做一件事情真不容易)

嚴重 答案 發現 指揮 主力 否則 持久 感恩 十月 元和十年(815年)六月 宰相武元衡遇刺後,唐憲宗任命裴度為宰相,讓他繼續挑起平定淮西的重擔。 裴度對憲宗說:“淮西是朝廷的心腹之疾,不能不除;而且朝廷既已出兵,兩河藩鎮都在密切關註事態的發展,以決定他們的

Java請求傳送工具類(HttpClientUtils爬蟲)-yellowcong

Java傳送請求,之前做過一段時間的爬蟲,所以寫了這個請求傳送的工具,這個工具偽裝成百度,然後去爬取推酷的資料,當時是由於推酷有ip訪問限制,你如果是爬蟲,就不讓訪問了,所以我偽裝成了百度,然後就可以隨便爬取推庫的資料了,當時爬了1GB多的文字資料,然後圖

java受檢異常執行異常

正確運用異常處理機制,有助於提高程式的健壯性。 所謂程式的健壯性,就是指程式在多數情況下能夠正常執行,返回預期的正確結果;如果偶爾遇到異常情況,程式也能採取周到的解決措施。 受檢查異常表示程式可以處理的異常,如果丟擲異常的方法本身不能處理它,那麼方法呼叫者

python基礎--異常象和叠代器

代碼 error: cto not 中一 val tex .cn data- 異常處理 面向對象 叠代器和生成器 python異常處理 下面代碼觸發了一個FileNotFoundError >>> open("notexist