中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java try catch finally異常處理組合的詳細解析

發布時間:2020-07-22 09:58:03 來源:億速云 閱讀:209 作者:小豬 欄目:編程語言

這篇文章主要講解了Java try catch finally異常處理組合的詳細解析,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

try catch finally組合:檢測異常,并傳遞給catch處理,并在finally中進行資源釋放。

try catch組合 : 對代碼進行異常檢測,并對檢測的異常傳遞給catch處理。對異常進行捕獲處理

public class Demo04 {
  public static void main(String[] args) {
    int [] arr={};
      //可能會發生異常的語句
      int a=get(arr);//可以點第2個或者第3個
      System.out.println(a);
  }
  public static int get(int[] arr) throws ArrayIndexOutOfBoundsException ,NullPointerException ,Exception {
    //若異常有一個定義為Exception,可以單寫Exception。因為Exception是所有的父類
    if(arr==null){
      throw new NullPointerException("數組為空!");
    }
    if(arr.length==0){
      throw new ArrayIndexOutOfBoundsException("數組長度為0!");//都可以寫Exception,因為Exception是所有的父類
    }
    int i=arr[arr.length-1];
    return i;
  }
}

一個try 多個catch組合 : 對代碼進行異常檢測,并對檢測的異常傳遞給catch處理。對每種異常信息進行不同的捕獲處理。

注意:這種異常處理方式,要求多個catch中的異常不能相同,并且若catch中的多個異常之間有子父類異常的關系,那么子類異常要求在上面的catch處理,父類異常在下面的catch處理。

try finally 組合: 對代碼進行異常檢測,檢測到異常后因為沒有catch,所以一樣會被默認jvm拋出。異常是沒有捕獲處理的。但是功能所開啟資源需要進行關閉,所有finally。只為關閉資源。(虛擬機處理—結束程序、報錯;finally還是執行的)。

運行時期異常:

RuntimeException和他的所有子類異常,都屬于運行時期異常。

  NullPointerException(空指針),ArrayIndexOutOfBoundsException(數組越界)、ClassCastException(類轉換異常)、NumberFormatException(數字格式異常--數字轉換異常)、

java.util.ConcurrentModificationException(并發修改異常)、SQLException(sql異常)  等都屬于運行時期異常。

運行時期異常的特點:

①、方法中拋出運行時期異常,方法定義中無需throws聲明,調用者也無需處理此異常;

②、運行時期異常一旦發生,需要程序人員修改源代碼。

異常在方法重寫中的細節:

1、子類覆蓋父類方法時,如果父類的方法聲明異常,子類只能聲明父類異常或者該異常的子類,或者不聲明。

2、 當父類方法聲明多個異常時,子類覆蓋時只能聲明多個異常的子集。

3、當被覆蓋的方法沒有異常聲明時,子類覆蓋時無法聲明異常的。

問題:接口中沒有聲明異常,而實現的子類覆蓋方法時發生了異常,怎么辦?

答:無法進行throws聲明,只能catch的捕獲。萬一問題處理不了呢?catch中繼續throw拋出,但是只能將異常轉換成RuntimeException子類拋出。

異常中常用的方法:

1、getMessage方法:返回該異常的詳細信息字符串,即異常提示信息。

2、toString方法:返回該異常的名稱與詳細信息字符串。

3、printStackTrace:在(紅字的方式)控制臺輸出該異常的名稱與詳細信息字符串、異常出現的代碼位置。

package com.oracle.demo01;

public class Demo06 {
  public static void main(String[] args) throws Exception{
    int [] arr={};
    try{
      //可能會發生異常的語句
      int a=get(arr);
      System.out.println(a);
    }catch(Exception ex){//若存在父類Exception,必須寫在最后面
      //getMessage()只打印異常信息
      //System.out.println(ex.getMessage());
      //toString()打印異常對象和異常信息
      //System.out.println(ex.toString());
      //以紅字的方式打印異常對象、信息、位置
      ex.printStackTrace();
    }finally{
      //不管發不發生異常都會執行的語句
      System.out.println("finally執行了。");
    }
    System.out.println("程序沒有結束!");
  }
  public static int get(int[] arr) throws ArrayIndexOutOfBoundsException ,NullPointerException {
    //若異常有一個定義為Exception,可以單寫Exception。因為Exception是所有的父類
    if(arr==null){
      throw new NullPointerException("數組為空!");
    }
    if(arr.length==0){
      throw new ArrayIndexOutOfBoundsException("數組長度為0!");//都可以寫Exception,因為Exception是所有的父類
    }
    int i=arr[arr.length-1];
    return i;
  }
}

看完上述內容,是不是對Java try catch finally異常處理組合的詳細解析有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆安县| 射洪县| 津市市| 宣武区| 平泉县| 容城县| 资源县| 浙江省| 宁陕县| 铜鼓县| 营山县| 出国| 湖州市| 遂平县| 林周县| 高邑县| 苏尼特左旗| 湘乡市| 永平县| 明水县| 阿拉善右旗| 阜宁县| 常德市| 黄山市| 丰县| 杨浦区| 商南县| 师宗县| 拉萨市| 诸城市| 扶沟县| 蛟河市| 南溪县| 东至县| 游戏| 湄潭县| 虎林市| 德昌县| 漳浦县| 元阳县| 民勤县|