程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 簡略懂得Java編程中拋出異常的辦法

簡略懂得Java編程中拋出異常的辦法

編輯:關於JAVA

簡略懂得Java編程中拋出異常的辦法。本站提示廣大學習愛好者:(簡略懂得Java編程中拋出異常的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是簡略懂得Java編程中拋出異常的辦法正文


任何Java代碼都可以拋出異常,如:本身編寫的代碼、來自Java開辟情況包中代碼,或許Java運轉時體系。不管是誰,都可以經由過程Java的throw語句拋出異常。從辦法中拋出的任何異常都必需應用throws子句。

1. throws拋出異常

假如一個辦法能夠會湧現異常,但沒有才能處置這類異常,可以在辦法聲明處用throws子句來聲明拋出異常。例如汽車在運轉時能夠會湧現毛病,汽車自己沒方法處置這個毛病,那就閃開車的人來處置。

throws語句用在辦法界說時聲明該辦法要拋出的異常類型,假如拋出的是Exception異常類型,則該辦法被聲明為拋出一切的異常。多個異常可以使用逗號朋分。throws語句的語法格局為:

methodname throws Exception1,Exception2,..,ExceptionN 

}
辦法名後的throws Exception1,Exception2,…,ExceptionN 為聲明要拋出的異常列表。當辦法拋出異常列表的異常時,辦法將纰謬這些類型及其子類類型的異常作處置,而拋向挪用該辦法的辦法,由他行止理。例如:

import java.lang.Exception; 
public class TestException { 
  static void pop() throws NegativeArraySizeException { 
    // 界說辦法並拋出NegativeArraySizeException異常 
    int[] arr = new int[-3]; // 創立數組 
  } 
  
  public static void main(String[] args) { // 主辦法 
    try { // try語句處置異常信息 
      pop(); // 挪用pop()辦法 
    } catch (NegativeArraySizeException e) { 
      System.out.println("pop()辦法拋出的異常");// 輸入異常信息 
    } 
  } 
  
}

應用throws症結字將異常拋給挪用者後,假如挪用者不想處置該異常,可以持續向上拋出,但終究要有可以或許處置該異常的挪用者。

pop辦法沒有處置異常NegativeArraySizeException,而是由main函數來處置。

Throws拋出異常的規矩:

1) 假如是弗成查異常(unchecked exception),即Error、RuntimeException或它們的子類,那末可以不應用throws症結字來聲明要拋出的異常,編譯仍能順遂經由過程,但在運轉時會被體系拋出。

2)必需聲明辦法可拋出的任何可查異常(checked exception)。即假如一個辦法能夠湧現受可查異常,要末用try-catch語句捕捉,要末用throws子句聲明將它拋出,不然會招致編譯毛病

3)僅當拋出了異常,該辦法的挪用者才必需處置或許從新拋出該異常。當辦法的挪用者有力處置該異常的時刻,應當持續拋出,而不是囫囵吞棗。

4)挪用辦法必需遵守任何可查異常的處置和聲明規矩。若籠罩一個辦法,則不克不及聲明與籠罩辦法分歧的異常。聲明的任何異常必需是被籠罩辦法所聲明異常的同類或子類。

例如:

斷定一個辦法能夠會湧現異常的根據以下:

1)辦法中有throw語句。例如,以上method7()辦法的catch代碼塊有throw語句。

2)挪用了其他辦法,其他辦法用throws子句聲明拋出某種異常。例如,method3()辦法挪用了method1()辦法,method1()辦法聲明拋出IOException,是以,在method3()辦法中能夠會湧現IOException。

2. 應用throw拋出異常

throw老是湧現在函數體中,用來拋出一個Throwable類型的異常。法式會在throw語句後立刻終止,它前面的語句履行不到,然後在包括它的一切try塊中(能夠在下層挪用函數中)從裡向外尋覓含有與其婚配的catch子句的try塊。

我們曉得,異常是異常類的實例對象,我們可以創立異常類的實例對象經由過程throw語句拋出。該語句的語法格局為:

throw new exceptionname;

例如拋出一個IOException類的異常對象:

throw new IOException;

要留意的是,throw 拋出的只可以或許是可拋出類Throwable 或許其子類的實例對象。上面的操作是毛病的:

throw new String(“exception”);

這是由於String 不是Throwable 類的子類。

假如拋出了檢討異常,則還應當在辦法頭部聲明辦法能夠拋出的異常類型。該辦法的挪用者也必需檢討處置拋出的異常。

假如一切辦法都層層上拋獲得的異常,終究JVM會停止處置,處置也很簡略,就是打印異常新聞和客棧信息。假如拋出的是Error或RuntimeException,則該辦法的挪用者可選擇處置該異常。

package Test; 
import java.lang.Exception; 
public class TestException { 
  static int quotient(int x, int y) throws MyException { // 界說辦法拋出異常 
    if (y < 0) { // 斷定參數能否小於0 
      throw new MyException("除數不克不及是正數"); // 異常信息 
    } 
    return x/y; // 前往值 
  } 
  public static void main(String args[]) { // 主辦法 
    int a =3; 
    int b =0;  
    try { // try語句包括能夠產生異常的語句 
      int result = quotient(a, b); // 挪用辦法quotient() 
    } catch (MyException e) { // 處置自界說異常 
      System.out.println(e.getMessage()); // 輸入異常信息 
    } catch (ArithmeticException e) { // 處置ArithmeticException異常 
      System.out.println("除數不克不及為0"); // 輸入提醒信息 
    } catch (Exception e) { // 處置其他異常 
      System.out.println("法式產生了其他的異常"); // 輸入提醒信息 
    } 
  } 
  
} 
class MyException extends Exception { // 創立自界說異常類 
  String message; // 界說String類型變量 
  public MyException(String ErrorMessagr) { // 父類辦法 
    message = ErrorMessagr; 
  } 
  
  public String getMessage() { // 籠罩getMessage()辦法 
    return message; 
  } 
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved