麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

淺析Java語言中兩種異常使用的差別

2019-11-18 14:46:53
字體:
來源:轉載
供稿:網友

--------------------------------------------------------------------------------
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類衍生出來的

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美一级高潮 | 国产精品7区| 男女隐私免费视频 | 欧美 日韩 三区 | 国产成人精品一区在线播放 | 中文字幕在线永久视频 | 午夜男人免费视频 | 国产性tv国产精品 | 久久精品99久久久久久2456 | 一级毛片在线视频 | 欧美精品一区自拍a毛片在线视频 | 蜜桃91丨九色丨蝌蚪91桃色 | 国产一区二区视频在线播放 | 久久久久国产一区二区三区不卡 | 亚洲第一页在线观看 | 亚洲第一页综合 | 精品一区二区三区在线观看视频 | 亚洲一区二区中文字幕在线观看 | 欧美日韩在线免费观看 | 久久99精品国产自在现线 | 久久免费精品视频 | 欧美一级高清免费 | 欧美一区在线观看视频 | 欧美激情图区 | 一区二区久久久久草草 | 国产精品久久久久久久久岛 | 成人免费一区 | 久草成人在线观看 | 久久综合伊人 | 在线天堂中文在线资源网 | 免费a级毛片永久免费 | 青青国产在线视频 | 黄色片在线观看网站 | 极品一级片 | 九色p| 精品久久久久久久久久久久久久 | 国产精品亚洲三区 | 国产欧美一区二区三区免费看 | 国产精品爱久久久久久久 | 99精品欧美一区二区 | 久久精品成人 |