W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
異常是在運(yùn)行時(shí)在代碼序列中出現(xiàn)的異常狀況。例如,讀取一個(gè)不存在的文件。
Java異常是描述異常條件的對(duì)象發(fā)生在一段代碼中。
Java異常處理通過五個(gè)關(guān)鍵字管理: try,catch,throw,throws
和finally。
try
block包含要監(jiān)視的程序語句異常。
如果在塊中發(fā)生異常,則拋出異常。
catch
語句可以捕獲異常并以合理的方式處理它。
要手動(dòng)拋出異常,請(qǐng)使用關(guān)鍵字throw。
任何拋出的異常一個(gè)方法必須由一個(gè) throws
子句指定。
任何代碼絕對(duì)必須是在try塊完成之后執(zhí)行的命令被放在 finally
塊中。
要處理一個(gè)異常,我們把可能有的代碼在try ... catch語句中的異常。
try { // block of code to monitor for errors } catch (ExceptionType1 exOb) { // exception handler for ExceptionType1 } catch (ExceptionType2 exOb) { // exception handler for ExceptionType2 }
可能有異常的程序語句包含在 try
塊中。異常處理程序使用 catch
語句進(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."); } }
此程序生成以下輸出:
一旦拋出異常,程序控制就會(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é)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: