公共異常 – JAVA編程語言程序開發技術文章

Java編程語言提供幾種預定義的異常。下面是可能遇到的更具共同性的異常中的幾種:

ArithmeticException:整數被0除,運算得出的結果。

int i = 12 / 0;

NullPointerException:當對象沒被實例化時,訪問對象的屬性或方法的嘗試:

Date d = null;

System.out.println(d.toString());

NegativeArraySizeException:創建帶負維數大小的數組的嘗試。

ArrayIndexoutofBoundsException:訪問超過數組大小范圍的一個元素的嘗試。

SecurityException:典型地被拋出到瀏覽器中,SecurityManager類將拋出applets的一個異常,該異常企圖做下述工作(除非明顯地得到允許):

訪問一個本地文件

打開主機的一個socket,這個主機與服務於applet的主機不是同一個。

在運行時環境中執行另一個程序

異常的處理機制

一般來說,異常的處理機制有以下三種:

try-catch-finally  主動異常處理

throws 消極異常處理

throw 引入異常

實例分析

例1

問題的描述:

寫一個常見的異常

解決方案:

請看下例:

[java]
public class TestException { 
    public static void main(String args[]) { 
        int i = 0; 
 
        String ss[] = { "Hello world!", "您好,世界!", "HELLO WORLD!!" }; 
 
        for (; i < 6; i++) { 
            System.out.println(ss[i]); 
        } 
    } 

public class TestException {
 public static void main(String args[]) {
  int i = 0;

  String ss[] = { "Hello world!", "您好,世界!", "HELLO WORLD!!" };

  for (; i < 6; i++) {
   System.out.println(ss[i]);
  }
 }
}

運行的結果為如圖。

  

 

要處理異常,將能夠拋出異常的代碼放入try塊中,然後創建相應的catch塊的列表,每個可能被拋出異常都有一個。如果生成的異常與catch中提到的相匹配,那麼catch條件的塊語句就被執行。在try塊之後,可能有許多catch塊,每一個都處理不同的異常。

請看下例:

[java]
class TestException2 { 
 
public static void main(String args[]) { 
 
int i = 0; 
 
String ss[] = { "Hello world!", "您好,世界!", "HELLO WORLD!!" }; 
 
for (; i < 5; i++) { 
 
try { 
 
System.out.println("第" + (i + 1) + "次循環:"); 
 
System.out.println(ss[i]); 
 
} catch (Exception e) { 
 
System.out.println("數組越界"); 
 
} finally { 
 
System.out.println("finally execute"); 
 

 

 

 

class TestException2 {

public static void main(String args[]) {

int i = 0;

String ss[] = { "Hello world!", "您好,世界!", "HELLO WORLD!!" };

for (; i < 5; i++) {

try {

System.out.println("第" + (i + 1) + "次循環:");

System.out.println(ss[i]);

} catch (Exception e) {

System.out.println("數組越界");

} finally {

System.out.println("finally execute");

}

}

}

}

運行的結果如圖

  

 

總結:從上例可以看出:不管出現不出現異常,finally語句塊都會執行。在try語句塊裡除瞭System.exit(int)語句外,finally語句塊必須執行。

Throws則是自己不處理異常,而交給上級處理,俗稱“異常上拋”,比如:

public static void main(String args) throws RuntimeException

這樣,一旦在代碼裡出現RuntimeException,在本類裡不做任何處理動作,而是交由上次程序或者虛擬機去處理。

 

摘自  qq1712088151
 

發佈留言