日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java两种异常_JAVA两种异常的区别 (转)

發布時間:2025/3/12 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java两种异常_JAVA两种异常的区别 (转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

總結

以上是生活随笔為你收集整理的java两种异常_JAVA两种异常的区别 (转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。