我們可創建一個控制器,令其捕獲所有類型的違例。具體的做法是捕獲基礎類違例類型Exception(也存在其他類型的基礎違例,但Exception是適
在某些情況下,我們想重新擲出剛才產生過的違例,特別是在用Exception捕獲所有可能的違例時。由於我們已擁有當前違例的句柄,所以只需簡單地重新擲
Java包含了一個名為Throwable的類,它對可以作為違例“擲”出的所有東西進行了描述。Throwable對象有兩種常
本章的第一個例子是:if(t == null)throw new NullPointerException();看起來似乎在傳遞進入一個方法的每個
並不一定非要使用Java違例。這一點必須掌握,因為經常都需要創建自己的違例,以便指出自己的庫可能生成的一個特殊錯誤——但創
覆蓋一個方法時,只能產生已在方法的基礎類版本中定義的違例。這是一個重要的限制,因為它意味著與基礎類協同工作的代碼也會自動應用於從基礎類衍生的任何對
無論一個違例是否在try塊中發生,我們經常都想執行一些特定的代碼。對一些特定的操作,經常都會遇到這種情況,但在恢復內存時一般都不需要(因為垃圾收集
在沒有“垃圾收集”以及“自動調用破壞器”機制的一種語言中(注釋⑤),finally顯得特別重要,因
一般情況下,Java的違例實施方案都顯得十分出色。不幸的是,它依然存在一個缺點。盡管違例指出程序裡存在一個危機,而且絕不應忽略,但一個違例仍有可能
為違例編寫代碼時,我們經常要解決的一個問題是:“一旦產生違例,會正確地進行清除嗎?”大多數時候都會非常安全,但在構建器中卻
“擲”出一個違例後,違例控制系統會按當初編寫的順序搜索“最接近”的控制器。一旦找到相符的控制器,就
用違例做下面這些事情:(1) 解決問題並再次調用造成違例的方法。(2) 平息事態的發展,並在不重新嘗試方法的前提下繼續。(3) 計算另一些結果,而
“對語言設計人員來說,創建好的輸入/輸出系統是一項特別困難的任務。”由於存在大量不同的設計方案,所以該任務的困難性是很容易
可將Java庫的IO類分割為輸入與輸出兩個部分,這一點在用Web浏覽器閱讀聯機Java類文檔時便可知道。通過繼承,從InputStream(輸入流
InputStream的作用是標志那些從不同起源地產生輸入的類。這些起源地包括(每個都有一個相關的InputStream子類):(1) 字節數組(
這一類別包括的類決定了我們的輸入往何處去:一個字節數組(但沒有String;假定我們可用字節數組創建一個);一個文件;或者一個“管道&
利用層次化對象動態和透明地添加單個對象的能力的做法叫作“裝飾器”(Decorator)方案——&l
FilterInputStream類要完成兩件全然不同的事情。其中,DataInputStream允許我們讀取不同的基本類型數據以及String對
與DataInputStream對應的是DataOutputStream,後者對各個基本數據類型以及String對象進行格式化,並將其置入一個數據
RandomAccessFile用於包含了已知長度記錄的文件,以便我們能用seek()從一條記錄移至另一條;然後讀取或修改那些記錄。各記錄的長度並