国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java學習筆記12--異常處理

2019-11-14 23:13:13
字體:
來源:轉載
供稿:網友
java學習筆記12--異常處理

java學習筆記系列:

java學習筆記11--集合總結

java學習筆記10--泛型總結

java學習筆記9--內部類總結

java學習筆記8--接口總結

java學習筆記7--抽象類與抽象方法

java學習筆記6--類的繼承、Object類

java學習筆記5--類的方法

java學習筆記4--對象的初始化與回收

java學習筆記3--類與對象的基礎

java學習筆記2--數據類型、數組

java學習筆記1--開發環境平臺總結

本文地址:http://m.survivalescaperooms.com/archimedes/p/java-study-note12.html,轉載請注明源地址。

1、異常處理概述

從一個讀取兩個整數并顯示商的例子:

public static void main(String args[]){    Scanner input = new Scanner(System.in);      System.out.

Enter two integers: 3 0

Exception in thread "main" java.lang.ArithmeticException: / by zeroat Main.main(Main.java:18)

解決的一個簡單的辦法是添加一個if語句來測試第二個數字:

public class Main{    public static void main(String args[])    {        Scanner input = new Scanner(System.in);                System.out.print("Enter two integers: ");        int number1 = input.nextInt();        int number2 = input.nextInt();        if(number2 != 0)            System.out.println(number1 + " / " + number2 + " is " + (number1 / number2));        else            System.out.println("Divisor cannot be zero ");    }}

為了演示異常處理的概念,包括如何創建、拋出、捕獲以及處理異常,繼續改寫上面的程序如下:

public class Main{    public static void main(String args[])    {        Scanner input = new Scanner(System.in);                System.out.print("Enter two integers: ");        int number1 = input.nextInt();        int number2 = input.nextInt();        try {            if(number2 == 0)                throw new ArithmeticException("Divisor cannot be zero");            System.out.println(number1 + " / " + number2 + " is " + (number1 / number2));        }        catch(ArithmeticException ex) {            System.out.println("Exception: an integer " + "cannot be divided by zero ");        }        System.out.println("Execution continues ...");    }}
2、異常處理的優勢

改用方法來計算商:

public class Main{    public static int quotient(int number1, int number2) {        if(number2 == 0)            throw new ArithmeticException("Divisor cannot be zero");        return number1 / number2;    }        public static void main(String args[])    {        Scanner input = new Scanner(System.in);                System.out.print("Enter two integers: ");        int number1 = input.nextInt();        int number2 = input.nextInt();        try {            int result = quotient(number1, number2);            System.out.println(number1 + " / " + number2 + " is " + result);        }        catch(ArithmeticException ex) {            System.out.println("Exception: an integer " + "cannot be divided by zero ");        }        System.out.println("Execution continues ...");    }}

異常處理的優勢就是將檢測錯誤從處理錯誤中分離出來。

3、異常類型

4、關于異常處理的更多知識

java的異常處理模型基于三種操作:聲明一個異常、拋出一個異常、捕獲一個異常

聲明異常

在方法中聲明異常,就是在方法頭中使用關鍵字throws,如下所示:

public void myMethod throws Exception1,Exception2,……,ExceptionN

拋出異常

檢測一個錯誤的程序可以創建一個正確的異常類型的實例并拋出它

實例:

IllegalArgumentException ex = new IllegalArgumentException("Worng Argument");throw ex;

或者直接:

throw new IllegalArgumentException("Worng Argument");

捕獲異常

當拋出一個異常時,可以在try-catch中捕獲和處理它:

try {    statements;} catch (exception1 ex1){    handler for exception1;} catch (exception1 ex2){    handler for exception2;} ……catch (exception1 exN){    handler for exceptionN;}    

從異常中獲取信息

可以采用Throwable類中的方法獲取異常的信息

public class test {    public static void main(String[] args) {        try {            System.out.println(sum(new int[]{1,2,3,4,5}));        } catch(Exception ex) {            ex.printStackTrace();            System.out.println(ex.getMessage());            System.out.println(ex.toString());            System.out.println("Trace Info Obtained from getBackTrace");            StackTraceElement[] traceElements = ex.getStackTrace();            for(int i = 0; i < traceElements.length; i++) {                System.out.print("monthod " + traceElements[i].getMethodName());                System.out.println("(" + traceElements[i].getClassName());                System.out.println(traceElements[i].getLineNumber() + ")");            }        }    }        private static int sum(int[] list) {        int sum = 0;        for(int i = 0; i <= list.length; i++) {            sum += list[i];        }        return sum;    }}

finally語句

無論異常是否出現,都希望執行某些代碼,這時可以采取finally子句:

public class test {    public static void main(String[] args) {        PrintWriter output = null;        try {            output = new PrintWriter("wu.txt");            output.println("wlecome tio java");        } catch(IOException ex) {            ex.printStackTrace();        } finally {            if(output != null)                output.close();        }        System.out.println("End of the program");    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇文区| 古交市| 承德市| 景东| 永清县| 阿鲁科尔沁旗| 丰顺县| 祁门县| 红河县| 蓬莱市| 湘潭市| 合江县| 金塔县| 重庆市| 游戏| 肇源县| 兴和县| 芮城县| 那坡县| 和平县| 嘉义市| 陇川县| 浏阳市| 永吉县| 永昌县| 克东县| 陆良县| 阿鲁科尔沁旗| 鄂温| 澳门| 封丘县| 哈密市| 荥阳市| 横山县| 壶关县| 新河县| 墨竹工卡县| 朝阳市| 高清| 厦门市| 苍南县|