<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 241,  comments - 116,  trackbacks - 0
    定義三個異常類:ExceptionA,ExceptionB,ExceptionC

     
    ?
    public class ExceptionA extends Exception {
        public ExceptionA(String str) {
            super();
        }
    }
     
    public class ExceptionB extends ExceptionA {
     
        public ExceptionB(String str) {
            super(str);
        }
    }
     
    public class ExceptionC extends ExceptionA {
        public ExceptionC(String str) {
            super(str);
        }
    }

    異常丟失的情況:

     
    ?
    public class NeverCaught {
        static void f() throws ExceptionB{
            throw new ExceptionB("exception b");
        }
     
        static void g() throws ExceptionC {
            try {
                f();
            } catch (ExceptionB e) {
                ExceptionC c = new ExceptionC("exception a");
                throw c;
            }
        }
     
        public static void main(String[] args) {
                try {
                    g();
                } catch (ExceptionC e) {
                    e.printStackTrace();
                }
        }
     
    }
    /*
    exception.ExceptionC
    at exception.NeverCaught.g(NeverCaught.java:12)
    at exception.NeverCaught.main(NeverCaught.java:19)
    */

    為什么只是打印出來了ExceptionC而沒有打印出ExceptionB呢?這個還是自己分析一下吧!

    上面的情況相當于少了一種異常,這在我們排錯的過程中非常的不利。那我們遇到上面的情況應該怎么辦呢?這就是異常鏈的用武之地:保存異常信息,在拋出另外一個異常的同時不丟失原來的異常。

     
    ?
    public class NeverCaught {
        static void f() throws ExceptionB{
            throw new ExceptionB("exception b");
        }
     
        static void g() throws ExceptionC {
            try {
                f();
            } catch (ExceptionB e) {
                ExceptionC c = new ExceptionC("exception a");
                //異常連
                c.initCause(e);
                throw c;
            }
        }
     
        public static void main(String[] args) {
                try {
                    g();
                } catch (ExceptionC e) {
                    e.printStackTrace();
                }
        }
     
    }
    /*
    exception.ExceptionC
    at exception.NeverCaught.g(NeverCaught.java:12)
    at exception.NeverCaught.main(NeverCaught.java:21)
    Caused by: exception.ExceptionB
    at exception.NeverCaught.f(NeverCaught.java:5)
    at exception.NeverCaught.g(NeverCaught.java:10)
    ... 1 more
    */

    這個異常鏈的特性是所有異常均具備的,因為這個initCause()方法是從Throwable繼承的。
    posted on 2011-12-26 10:25 墻頭草 閱讀(1553) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 老司机午夜在线视频免费观| 亚洲人成网站在线在线观看| 国产va免费观看| 免费人成激情视频| 国产成人va亚洲电影| 免费一看一级毛片人| 激情婷婷成人亚洲综合| 亚洲国产老鸭窝一区二区三区| 人妻免费一区二区三区最新| 亚洲AV永久纯肉无码精品动漫 | 亚洲精品中文字幕乱码影院| 日韩人妻一区二区三区免费| 久久亚洲AV成人无码软件| 777爽死你无码免费看一二区 | 日本亚洲免费无线码| 免费的一级片网站| 国产亚洲精品欧洲在线观看| 亚洲国产日韩在线观频| 华人在线精品免费观看| 亚洲成人免费网站| 日韩a在线观看免费观看| 野花视频在线官网免费1| 亚洲色WWW成人永久网址| 无码av免费一区二区三区试看| 国产一卡二卡≡卡四卡免费乱码| 污污免费在线观看| 亚洲av无码无在线观看红杏| 91九色精品国产免费| 国产精品成人亚洲| 久久精品国产99精品国产亚洲性色| 1000部拍拍拍18勿入免费视频软件 | 99免费精品视频| 亚洲欧洲日本国产| 国产成人精品免费直播| 中国人免费观看高清在线观看二区| 亚洲视频一区在线观看| 四虎永久免费观看| 一区二区三区在线免费看| 亚洲人片在线观看天堂无码| 亚洲人成精品久久久久| 免费无码又爽又刺激聊天APP|