Java的異常

一、異常:
(1)錯誤:
錯誤是絕症,只能修改代碼;
(2)異常
編譯時期異常Exception是小病,能夠處理;
運行時期異常RuntimeException不能處理,也須要修改代碼;java

package com.oracle.demo01; //錯誤:絕症(只能修改代碼) //異常:編譯時期異常Exception 小病(能夠處理);運行時期異常RuntimeException不能處理
public class demo01 { public static void main(String[] args) { //數組長度過大,會產生內存溢出錯誤 //int[] arr = new int[999999999];
        int[] arr = new int[999]; //異常
        int[] arr1 = new int[5]; int i = get(arr1); System.out.println(i); } public static  int  get(int[] arr){ int i = arr[5]; return i; } }

效果以下:程序員

 

(3)throw new Exception();拋出異常對象;
throws Exception;拋出異常類;
(4)try{可能會發生異常的語句
}catch(可能會發生異常的類名 變量名){
異常的處理方式
}finally{
無論發不發生異常都會執行的語句
釋放資源的語句
}數組

package com.oracle.demo01; /*try{ 可能會發生異常的語句 }catch(可能會發生異常的類名 變量名){ 異常的處理方式 }finally{ 無論發不發生異常都會執行的語句 釋放資源的語句 }*/
public class demo02 { public static void main(String[] args) { int[] arr = {1,2,2,2}; try{ int i = get(arr); System.out.println(i); }catch(NullPointerException ex){ System.out.println(ex); }catch(ArrayIndexOutOfBoundsException ex){ System.out.println(ex); }finally{ System.out.println("finally執行語句"); } System.out.println("你好呀"); } public static int get(int[] arr) { if(arr == null){ throw new NullPointerException("數組爲空"); } if(arr.length == 0){ throw new ArrayIndexOutOfBoundsException("數組長度爲零"); } int i = arr[arr.length-1]; return i; } }

 效果以下:oracle

 

(5)對於RuntimeException運行時期異常:不須要throws,也不須要try,catch處理
一旦出現,程序員修改代碼;
對於編譯時期異常Exception及Exception的子類(不包括RuntimeException)
2種處理方式:一個throws,一個是try/catchspa

package com.oracle.demo02; //RuntimeException運行時期異常:不須要throws,也不須要try,catch處理 // 一旦出現,程序員修改代碼; //對於編譯時期異常Exception及Exception的子類(不包括RuntimeException) // 2種處理方式:一個throws,一個是try/catch
public class demo01 { public static void main(String[] args) { int[]  arr = null; try { System.out.println(get2(arr)); } catch (Exception e) { System.out.println(e.getMessage()); } } public static  int get(int[] arr){ if(arr == null){ throw  new  NullPointerException("數組爲空"); } return arr[1]; } public static  int get2(int[] arr) throws Exception { if(arr == null){ throw  new  Exception("數組爲空"); } return arr[1]; } }

效果以下:3d

(6)1當父類方法有異常時,子類繼承重寫後能夠不拋異常,
也能夠拋異常,該異常不得超過父類異常
2當父類方法沒有異常,子類重寫該方法不得拋出異常
若是該方法調用了一個拋出編譯異常的方法,只能try,catch;code

package com.oracle.demo02; //1當父類方法有異常時,子類繼承重寫後能夠不拋異常, //也能夠拋異常,該異常不得超過父類異常 //2當父類方法沒有異常,子類重寫該方法不得拋出異常 //若是該方法調用了一個拋出編譯異常的方法,只能try,catch;
import java.text.ParseException; public class fu { public  void f() throws ParseException{} //重載不會
        public void f(String a){}; } class  zi  extends fu{ public void f(){ try { z(); } catch (Exception e) { // TODO Auto-generated catch block
 e.printStackTrace(); } }; public void z() throws Exception{} }
相關文章
相關標籤/搜索