国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

充分利用鏈接異常處理

2019-11-18 15:04:55
字體:
來源:轉載
供稿:網友

  鏈接異常處理(Chained exceptions)對于java 1.4而言還是個新東西,但程序員已經多年使用它,程序員要么自己編寫這一方面的代碼,要么利用第三方函數。現在鏈接異常處理已經成為標準API的其中重要的一部分。

鏈接異常處理非常有用,因為在異常發生之后,它們可以提供最及時的異常原因查看并處理之。雖然你可以通過調用當前異常的getCause方法(如下)來獲得發生異常的原因根源,但你通常不會這樣做的。

Throwable t = e.getCause();

當你想打印一個異常的堆棧跟蹤時,假如已經存在異常原因,則原因的堆棧跟蹤將會被打印,假如原因之中又包含著原因,則就打印被包含著的原因堆棧跟蹤,如此類推。這里是帶有原因的一個異常產生的堆棧跟蹤,結果是打印堆棧跟蹤:

public class ChainedTip {
public static void main(String args[]) {
try {
foo();
}
catch(TipException e) {
e.PRintStackTrace();
}
}

public static void foo() throws TipException {
try {
FileInputStream in = new FileInputStream("not.there");
}
catch (IOException e) {
throw new TipException(e);
}
}
}
tips.TipException: java.io.FileNotFoundException: not there (The system cannot find the file specified)
at tips.ChainedTip.foo(ChainedTip.java:21)
at tips.ChainedTip.main(ChainedTip.java:9)
Caused by: java.io.FileNotFoundException: not.there (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.〈init〉(FileInputStream.java:103)
at java.io.FileInputStream.〈init〉(FileInputStream.java:66)
at tips.ChainedTip.foo(ChainedTip.java:18)
... 1 more

以"Caused by:"為開始的行表示TipException異常的原因。
正如你所看到的,假如想知道,你可以從鏈接異常中得到大量的信息。實際上,鏈接異常就隨帶著豐富的信息。

當在一個嵌套類中產生異常時,你可以得到包含多頁的堆棧跟蹤結果,但實質上只包含一個錯誤內容。雖然這是鏈接異常處理的一個不足,但它還是值得使用的。

當建立一個自己的異常處理時,請充分利用鏈接異常處理,除了使用通常使用的構造器之外,還要編寫兩個構造器。

classTipException extends Exception {
public TipException() {}

public TipException(String msg) {
super(msg);
}

public TipException(String msg, Throwable t) {
super(msg, t);
}

public TipException(Throwable t) {
super(t);
}
}

通過執行包含Throwable對象的兩個構造器,可以實現鏈接異常處理。在這些構造器中,你可以將一些函數從Throwable對象傳遞到上一層類中,并讓其完成所有的任務。

鏈接異常與Java API還是有些不同,但是它是功能完整,能夠起著真正作用的Java 程序。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜南县| 东山县| 林州市| 昔阳县| 南城县| 海盐县| 崇明县| 三门峡市| 铜川市| 博兴县| 台州市| 琼海市| 迁安市| 乡宁县| 鱼台县| 习水县| 安西县| 宽城| 通榆县| 温州市| 鹤山市| 河池市| 宜黄县| 迁安市| 上虞市| 商洛市| 乐昌市| 庐江县| 墨江| 桑植县| 修武县| 八宿县| 大石桥市| 昌吉市| 蚌埠市| 苏尼特左旗| 苍山县| 黎川县| 介休市| 津南区| 贵定县|