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://www.cnblogs.com/archimedes/p/java-study-note12.html,轉載請注明源地址。
1、異常處理概述
從一個讀取兩個整數并顯示商的例子:
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(); System.out.println(number1 + " / " + number2 + " is " + (number1 / number2));}Enter two integers: 3 0
Exception in thread "main" java.lang.ArithmeticException: / by zero
at 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));elseSystem.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");} }?
轉載于:https://www.cnblogs.com/wuyudong/p/java-study-note12.html
總結
以上是生活随笔為你收集整理的java学习笔记12--异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下修改mysql root密码
- 下一篇: 使用设置报头x-Frame-Option