<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)  編輯  收藏

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


    網站導航:
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 国产精品久久久久免费a∨| 日韩电影免费在线观看| 全免费毛片在线播放| 亚洲黄色免费观看| 99在线观看视频免费| 亚洲日本在线看片| 最近免费中文字幕大全高清大全1| 亚洲国产一区二区a毛片| 午夜影院免费观看| 亚洲网站在线免费观看| 真人做人试看60分钟免费视频| 亚洲黄色网址在线观看| 中文字幕无码播放免费| 亚洲不卡1卡2卡三卡2021麻豆| 18国产精品白浆在线观看免费| 亚洲天堂2017无码中文| 国产高清在线精品免费软件| 日韩毛片一区视频免费| 亚洲精品二区国产综合野狼| 免费A级毛片无码A∨| 亚洲乱码一二三四区麻豆| 成人永久免费高清| 免费看内射乌克兰女| 亚洲国产日韩在线视频| 黄色成人免费网站| 亚洲av无码专区亚洲av不卡| 亚洲精品国产精品乱码不卞| 嫩草成人永久免费观看| 亚洲免费福利视频| 啊v在线免费观看| 久久久久久一品道精品免费看| 亚洲一卡二卡三卡| 亚洲成a人片在线观看国产| 高清一区二区三区免费视频| 亚洲熟妇av一区| 免费人成在线观看视频播放| 国产精品偷伦视频观看免费| 亚洲人成www在线播放| 在线精品亚洲一区二区小说 | 久久久婷婷五月亚洲97号色| 成年性羞羞视频免费观看无限|