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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(JAVA学习笔记) 异常处理

發(fā)布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (JAVA学习笔记) 异常处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 什么是異常
    • 異常分類
    • 異常體系結(jié)構(gòu)
      • Error
      • Exception
      • Error和Exception的區(qū)別:
    • 異常處理機制
      • 代碼演示
    • 自定義異常
      • 代碼演示

什么是異常

  • 異常指程序運行中出現(xiàn)的不期而至的各種情況,如:文件找不到,網(wǎng)絡(luò)連接失敗,非法參數(shù)等。
  • 異常發(fā)生在程序運行期間,它影響了正常程序執(zhí)行流程。

異常分類

要理解Java異常處理是如何工作的,需要掌握以下三種類型的異常:

  • 檢查性異常:最具代表性的檢查性異常是用戶錯誤或問題引起的異常,這是程序員無法預(yù)見的。例如要打開一個不存在的文件時,一個異常就發(fā)生了,這些異常在編譯時不能被簡單地忽略。
  • 運行時異常:運行時異常是可能被程序員避免的異常。與檢查性異常相反,運行時異常可以在編譯時被忽略。
  • 錯誤:錯誤不是異常,而是脫離程序員控制的問題。錯誤在代碼中通常被忽略。例如,當(dāng)棧溢出時,一個錯誤就發(fā)生了,它們在編譯時也檢查不到的。
  • 異常體系結(jié)構(gòu)

    • Java把異常當(dāng)做對象處理,并定義一個基類java.lang.Throwable作為所有異常的超類
    • 在Java API中已經(jīng)定義了許多異常類,這些異常類分為兩大類,錯誤ErrorException

    Error

    • Error類對象由Java虛擬機生成并拋出,大多數(shù)錯誤與代碼編寫者所執(zhí)行的操作無關(guān)。
    • Java虛擬機運行錯誤(Virtual MachainError),當(dāng)JVM不再有繼續(xù)執(zhí)行操作所需的內(nèi)存資源時,將會出現(xiàn)OutOfMemoryError。這些異常發(fā)生時,Java虛擬機(JVM)一般會選擇線程終止。
    • 還有發(fā)生在虛擬機試圖執(zhí)行應(yīng)用時,如類定義錯誤(NoClassDefFoundError),連接錯誤(LinkageError)。這些錯誤是不可查的,因為它們在應(yīng)用程序的控制和處理能力之外,而且絕大多數(shù)是程序運行時不允許出現(xiàn)的情況。

    Exception

    在Exception分支中有一個重要的子類RuntimeException(運行時異常)

    • ArrayIndexOutOfBoundsException(數(shù)組下標(biāo)越界)
    • NullPointerException(空指針異常)
    • ArithmeticException(算術(shù)異常)
    • MissingResourceException(丟失資源)
    • ClassNotFoundException(找不到類)等異常,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。

    這些異常一般是由程序邏輯錯誤引起的,程序應(yīng)該從邏輯角度盡可能避免這類異常的發(fā)生

    Error和Exception的區(qū)別:

    • Error通常是災(zāi)難性的致命的錯誤,是程序無法控制和處理的,當(dāng)出現(xiàn)這些異常時,Java虛擬機(JVM)一般會選擇終止線程;Exception通常請款下是可以被程序處理的,并在程序中應(yīng)盡可能的去處理這些異常 。

    異常處理機制

    • 拋出異常
    • 捕獲異常
    • 異常處理的五個關(guān)鍵字:try,catch,finally,throw,throws

    代碼演示

    try,catch,finally

    public class Test1 {public static void main(String[] args) {int a = 1;int b = 0;//假設(shè)要捕獲多個異常,異常范圍必須從小到大!//ctrl+alt+T 捕獲異常快捷鍵try {//try監(jiān)控區(qū)域System.out.println(a/b);}catch (Error e){//catch(想要捕獲的異常類型),捕獲異常System.out.println("Error");}catch (Exception e) {System.out.println("Exception");}catch (Throwable t){System.out.println("Throwable");}finally {//處理異常善后工作,無論是否捕獲到異常,最后都會執(zhí)行System.out.println("finally");}} }


    throw,throws

    public class Test2 {public static void main(String[] args) {try {new Test2().test(1,0);} catch (ArithmeticException e) {//快捷鍵捕獲異常時自動捕獲方法上拋出的異常e.printStackTrace();} finally {}}//假設(shè)在方法中處理不了這個異常,那么可以在方法上拋出異常public void test(int a, int b) throws ArithmeticException{if(b == 0){//主動拋出異常,一般在方法中使用throw new ArithmeticException();}} }

    自定義異常

    使用Java內(nèi)置的異常類可以描述在編程時出現(xiàn)的大部分異常情況。除此之外,用戶還可以自定義異常。用戶自定義異常類,只需繼承Exception類即可。
    在程序中使用自定義異常類,大體可分為以下幾個步驟:

  • 創(chuàng)建自定義異常類。
  • 在方法中通過throw關(guān)鍵字拋出異常。
  • 如果在當(dāng)前拋出異常的方法中處理異常,可以使用try-catch語句捕獲并處理;否則在方法的聲明處通過throws關(guān)鍵字指明要拋出給方法調(diào)用者的異常,繼續(xù)進(jìn)行下一步操作。
  • 在出現(xiàn)異常方法的調(diào)用者中捕獲并處理異常。
  • 代碼演示

    自定義異常類:

    //自定義的異常類,繼承Exception public class MyException extends Exception{private int number;public MyException(int a){this.number =a;}//alt+insert toString,打印異常信息@Overridepublic String toString() {return "MyException{" +"number=" + number +'}';} }

    測試類:

    public class Test {public static void main(String[] args) {try {test(11);} catch (MyException e) {System.out.println("MyException------"+e);}}//可能會存在異常的方法static void test(int a) throws MyException {System.out.println("傳遞的參數(shù)為"+a);if(a>10){throw new MyException(a);//拋出異常}System.out.println("OK");} }

    總結(jié)

    以上是生活随笔為你收集整理的(JAVA学习笔记) 异常处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。