Java 異常

2018-02-20 01:13 更新

Java教程 - Java異常


異常是在運(yùn)行時(shí)在代碼序列中出現(xiàn)的異常狀況。例如,讀取一個(gè)不存在的文件。

Java異常是描述異常條件的對(duì)象發(fā)生在一段代碼中。

關(guān)鍵詞

Java異常處理通過(guò)五個(gè)關(guān)鍵字管理: try,catch,throw,throws和finally。

try block包含要監(jiān)視的程序語(yǔ)句異常。

如果在塊中發(fā)生異常,則拋出異常。

catch 語(yǔ)句可以捕獲異常并以合理的方式處理它。

要手動(dòng)拋出異常,請(qǐng)使用關(guān)鍵字throw。

任何拋出的異常一個(gè)方法必須由一個(gè) throws 子句指定。

任何代碼絕對(duì)必須是在try塊完成之后執(zhí)行的命令被放在 finally 塊中。


語(yǔ)法

要處理一個(gè)異常,我們把可能有的代碼在try ... catch語(yǔ)句中的異常。

try { 
// block of code to monitor for errors 
} 
catch (ExceptionType1 exOb) { 
// exception handler for ExceptionType1 
}
catch (ExceptionType2 exOb) { 
// exception handler for ExceptionType2 
}

可能有異常的程序語(yǔ)句包含在 try 塊中。異常處理程序使用 catch 語(yǔ)句進(jìn)行編碼。

這里, ExceptionType 是發(fā)生的異常的類型。


例子

在try塊和catch子句中封裝要監(jiān)視的代碼。

下面的程序包括一個(gè)try塊和一個(gè)catch子句處理由除法生成的ArithmeticException錯(cuò)誤:

public class Main {
  public static void main(String args[]) {
    int d, a;
    try { // monitor a block of code.
      d = 0;
      a = 42 / d;
      System.out.println("This will not be printed.");
    } catch (ArithmeticException e) { // catch divide-by-zero error
      System.out.println("Division by zero.");
    }
    System.out.println("After catch statement.");
  }
}

此程序生成以下輸出:

例2

一旦拋出異常,程序控制就會(huì)從try塊轉(zhuǎn)移到catch塊中。執(zhí)行從未從catch返回到try塊。

以下代碼處理異常并繼續(xù)。

import java.util.Random;

public class Main {
  public static void main(String args[]) {
    int a = 0, b = 0, c = 0;
    Random r = new Random();
    for (int i = 0; i < 32000; i++) {
      try {
        b = r.nextInt();
        c = r.nextInt();
        a = 12345 / (b / c);
      } catch (ArithmeticException e) {
        System.out.println("Division by zero.");
        a = 0; // set a to zero and continue
      }
      System.out.println("a: " + a);
    }
  }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)