異常:異常有的是因為用戶錯誤引起,有的是程序錯誤引起的,還有其它一些是因為物理錯誤引起的。
異常處理關鍵字:try、catch、finally、throw、throws
注意事項:
異常大致分類:
文法:
try{//需要監聽的代碼塊} catch(異常類型異常名稱/e){//對捕獲到try監聽到的出錯的代碼塊進行處理throw 異常名稱/e; //thorw表示拋出異常throw new 異常類型(“自定義”);} finally{//finally塊裡的語句不管異常是否出現,都會被執行}修飾符返回值方法名() throws 異常類型{ //throws只是用來聲明異常,是否拋出由方法調用者決定//代碼塊}代碼例子:(try與catch與finally)
public class ExceptionTest {public static void main(String[] args) {Scanner input=new Scanner(System.in); try{ //監聽代碼塊int a=input.nextInt(); int b=input.nextInt(); double sum=a/b; System.out.println(sum); } catch(InputMismatchException e){ System.out.println("只能輸入數字"); } catch(ArithmeticException e){ System.out.println("分母不能為0"); } catch(Exception e){ //Exception是所有異常的父類System.out.println("發生了其他異常"); } finally{ //不管是否出現異常,finally一定會被執行System.out.println("程序結束"); } }}代碼例子:(throw關鍵字)
import java.util.InputMismatchException;import java.util.Scanner;public class ExceptionTest {public static void main(String[] args) {Scanner input=new Scanner(System.in); try{ //監聽代碼塊int a=input.nextInt(); int b=input.nextInt(); double sum=a/b; System.out.println(sum); } catch(InputMismatchException e){ //catch(異常類型異常名稱) System.out.println("只能輸入數字"); throw e; //拋出catch捕捉到的異常//throw new InputMismatchException(); 同上} catch(ArithmeticException e){ System.out.println("分母不能為0"); throw new ArithmeticException("分母為0拋出異常"); //拋出ArithmeticException異常} catch(Exception e){ //Exception是所有異常的父類System.out.println("發生了其他異常"); } finally{ //不管是否出現異常,finally一定會被執行System.out.println("程序結束"); } }}代碼例子:(throws)
public class Throws {int a=1;int b=0;public void out() throws ArithmeticException{ //聲明可能要拋出的異常,可以有多個異常,逗號隔開try{ //監聽代碼塊int sum=a/b;System.out.println(sum);}catch(ArithmeticException e){System.out.println("分母不能為0");}finally{ //不管是否出現異常,finally一定會被執行System.out.println("程序結束");}}public static void main(String[] args){Throws t=new Throws();t.out(); //調用方法throw new ArithmeticException("分母為0拋出異常"); //由調用的方法決定是否要拋出異常/* * 第二種拋出方式*///ArithmeticException a=new ArithmeticException("分母為0拋出異常");//throw a;}}