日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

classcastexception异常_优雅的异常处理

發布時間:2023/12/2 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 classcastexception异常_优雅的异常处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • 代碼正常運行不會出問題,但是遇到意外,參數變量,不符合要求,發生意外,代碼終止運行
  • 代碼中的異常處理好了,代碼就可以順利的繼續運行!
  • 3.3 最近我們遇到過的異常

  • System.out.println(1/0);//java.lang.ArithmeticException:/ by zero
  • String str = null;
  • System.out.println(str.length());//java.lang.NullPointerException

  • int[] arr = {1,2};
  • System.out.println(arr[arr.length]);//java.lang.ArrayIndexOutOfBoundsException: 2

  • SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd HH時mm分ss秒 E");
  • sdf.parse("fsdfsdf");//ParseException

    5.ClassCastException:類型轉換異常

    異常的分類

    ------------------------------------------------------------------------------------------------------------

    異常的處理方式

    5.1 異常的處理方式

  • 自己捕獲處理
  • 自己不處理,拋出給別人
  • 5.2 自己處理[捕獲異常]

    try-catch的語法結構及鏈式結構多異常處理方式

    • 語法:

    try{

    //可能產生異常的代碼

    }catch(捕獲的異常類型 e){//e是形式參數

    //該異常捕獲之后要做的操作

    }catch(捕獲的異常類型 e){//e是形式參數

    //該異常捕獲之后要做的操作

    }finally{

    //異常發生之后一定會執行到的語句塊:

    //①流資源關閉②釋放鎖

    }

    語句塊執行順序:

  • 順序執行:進入異常捕獲語句塊
  • 如果產生異常,執行catch捕獲,捕獲到對應異常,并且對應catch后面的代碼塊
  • finally語句塊一定會執行到:前提前面語句沒有執行System.exit(0)退出虛擬機
  • 5.2異常信息處理方式二拋出異常

    • 語法結構:方法后面使用throws 需要拋出的異常類型

    示例:

    void eat() throws ArithmeticException, CloneNotSupportedException{

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");

    //sdf.parse("fsdfsd");

    }

    • 拋出異常的注意事項:

    ①方法拋出運行時異常,在方法頭可以不用拋出異常

    ②方法拋出編譯時異常:方法必須處理異常,或者拋出同類異常,或者拋出異常該異常的父類類型異常

    獲得異常信息的方式

    異常捕獲分析

  • 寫多個捕獲異常的語句塊,鏈式結構捕獲多異常,根據不同的異常,做不同的處理
  • 捕獲異常可以寫異常的父類,也可以捕獲到對應子類的異常
  • catch(捕獲的異常類型 e)捕獲的異常實際捕獲一個異常對象,該對象e可以在catch語句塊直接使用
  • 獲取信息的方式

    方式1:System.out.println(e.getMessage());//e.getMessage()

    方式2:System.out.println(e);//e.toString()

    方式3:e.printStackTrace();//打印異常信息

    finally結構

  • finally語句塊
  • try-catch語句塊可以用寫finally
  • 處理異常之后finally語句塊一定會執行到
  • finally語句塊中,一般用來處理什么內容
  • 關閉流資源[ IO流知識部分再了解 ]
  • 釋放鎖[ 線程知識部分再了解 ]
  • 注意 : 一般不要在finally里面寫返回語句,程序難理解
  • finally語句之前,如果有執行退出虛擬機,也是不會執行finally語句塊
  • public static void main(String[] args) {

    System.out.println(eat());;

    }

    static int eat(){

    int i = 10;

    try{

    i = 20;

    System.exit(0);

    System.out.println(1/0);

    return i;

    }catch(Exception e){

    e.printStackTrace();

    i = 30;

    return i;

    }finally{

    i = 40;

    return i;

    }

    }

    主動向外 拋出【產生異常】

    • 方法內部主動創建異常拋出:throw new SelfException("賬戶已經存在,請重新輸入");

    賬號登陸示例:

    static String[] arr = {"周周","黃黃"};

    public static void main(String[] args) throws SelfException {

    login("周周");

    }

    //主動產生異常向外拋出

    static void login(String name) throws SelfException{

    for(int i = 0;i<=arr.length-1;i++){

    if(name.equals(arr[i])){

    throw new SelfException("賬戶已經存在,請重新輸入");//自己在方法內部寫一個異常,拋出

    }

    }

    System.out.println("恭喜你注冊成功");

    }

    throws 和 throw的區別

  • throws 處理異常
  • 在方法頭拋出異常
  • throw 開發代碼存在以外的情況,自己主動拋出異常[產生異常]
  • 在方法內部 throw new NullPointException();
  • 自定義異常

    10.1 為什么需要自定義異常:

  • java中已經寫好很多異常,但不能滿足開發中所有異常描述的需求,所以需要自定義異常
  • 10.2 自定義異常的方式

  • 自定義類繼承異常類
  • 參照其他異常通過Exception設置異常提示信息
  • public class SelfException extends Exception {

    SelfException(String msg){

    super(msg);

    }

    }

    總結

    以上是生活随笔為你收集整理的classcastexception异常_优雅的异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。