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

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

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

    Swing


    天行健 君子以自強不息

    posts - 69, comments - 215, trackbacks - 0, articles - 16
       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    Java提供了兩類主要的異常:runtime exception和checked exception。所有的checked exception是從java.lang.Exception類衍生出來的,而runtime exception則是從java.lang.RuntimeException或java.lang.Error類衍生出來的。

    它們的不同之處表現在兩方面:機制上和邏輯上。

    一、機制上

    它們在機制上的不同表現在兩點:1.如何定義方法;2. 如何處理拋出的異常。請看下面CheckedException的定義:


    public class CheckedException extends Exception
    {
     public CheckedException() {}
     public CheckedException( String message )
     {
      super( message );
     }
    }




    以及一個使用exception的例子:


    public class ExceptionalClass
    {
     public void method1()
      throws CheckedException
      {
       // ... throw new CheckedException( "...出錯了" );
      }
     public void method2( String arg )
      {
       if( arg == null )
       {
        throw new NullPointerException( "method2的參數arg是null!" );
       }
      }
     public void method3() throws CheckedException
      {
       method1();
      }
    }




    你可能已經注意到了,兩個方法method1()和method2()都會拋出exception,可是只有method1()做了聲明。另外,method3()本身并不會拋出exception,可是它卻聲明會拋出CheckedException。在向你解釋之前,讓我們先來看看這個類的main()方法:


    public static void main( String[] args )
    {
     ExceptionalClass example = new ExceptionalClass();
     try
     {
      example.method1();
      example.method3();
     }
     catch( CheckedException ex ) { } example.method2( null );
    }




    在main()方法中,如果要調用method1(),你必須把這個調用放在try/catch程序塊當中,因為它會拋出Checked exception。

    相比之下,當你調用method2()時,則不需要把它放在try/catch程序塊當中,因為它會拋出的exception不是checked exception,而是runtime exception。會拋出runtime exception的方法在定義時不必聲明它會拋出exception。

    現在,讓我們再來看看method3()。它調用了method1()卻沒有把這個調用放在try/catch程序塊當中。它是通過聲明它會拋出method1()會拋出的exception來避免這樣做的。它沒有捕獲這個exception,而是把它傳遞下去。實際上main()方法也可以這樣做,通過聲明它會拋出Checked exception來避免使用try/catch程序塊(當然我們反對這種做法)。

    小結一下:

    * Runtime exceptions:

    在定義方法時不需要聲明會拋出runtime exception;

    在調用這個方法時不需要捕獲這個runtime exception;

    runtime exception是從java.lang.RuntimeException或java.lang.Error類衍生出來的。

    * Checked exceptions:

    定義方法時必須聲明所有可能會拋出的checked exception;

    在調用這個方法時,必須捕獲它的checked exception,不然就得把它的exception傳遞下去;

    checked exception是從java.lang.Exception類衍生出來的 

           
            Enumeration keys = UIManager.getLookAndFeelDefaults().keys();
            while (keys.hasMoreElements())
            {
                Object key = keys.nextElement();
                System.out.println(key);
            }

    主站蜘蛛池模板: 四虎国产精品永免费| 亚洲欧洲专线一区| 天堂在线免费观看| 亚洲无码在线播放| 91精品成人免费国产| 国产亚洲精品资在线| A级毛片高清免费视频在线播放| 亚洲国产成人久久精品影视 | 亚洲第一精品电影网| 四虎在线成人免费网站| 亚洲美女色在线欧洲美女| 亚洲w码欧洲s码免费| 亚洲中文字幕无码av| 黄网址在线永久免费观看| 日韩精品亚洲专区在线影视| 免费在线观看理论片| 国产免费内射又粗又爽密桃视频| 久久久久久久尹人综合网亚洲| 污污网站免费观看| 亚洲一区二区三区免费在线观看 | 亚洲高清视频在线播放| 黄色片在线免费观看| 亚洲av午夜国产精品无码中文字| 亚洲国产一成久久精品国产成人综合 | 亚洲黄页网在线观看| 哒哒哒免费视频观看在线www| 久久久久久久国产免费看| 亚洲情a成黄在线观看动漫尤物| 日韩毛片免费无码无毒视频观看| 亚洲AV成人一区二区三区观看 | 亚洲第一成年男人的天堂| 黄+色+性+人免费| 含羞草国产亚洲精品岁国产精品| 亚洲综合另类小说色区| 免费A级毛片无码视频| 亚洲AV日韩AV永久无码色欲| 亚洲精品国精品久久99热一| 91精品免费国产高清在线| 免费无码国产在线观国内自拍中文字幕 | 色老头永久免费网站| 羞羞网站在线免费观看|