Java異常怎么處理?新手必看的異常體系結(jié)構(gòu)和捕獲方法
什么是異常
- 實際工作中,遇到的情況不可能是非常完美的。比如:你寫的某個模塊,用戶輸入不一定符合.你的要求、你的程序要打開某個文件,這個文件可能不存在或者文件格式不對,你要讀取庫的數(shù)據(jù),數(shù)據(jù)可能是空的等。我們的程序再跑著,內(nèi)存或硬盤可能滿了。等等。
- 軟件程序在運行過程中,非??赡苡龅絼倓偺岬降倪@些異常問題,我們叫異常,英文是:Exception,意思是例外。這些,例外情況,或者叫異常,怎么讓我們寫的程序做出合理的處理。而不至于程序崩潰。
- 異常指程序運行中出現(xiàn)的不期而至的各種狀況,如:文件找不到、網(wǎng)絡連接失敗、非法參數(shù)等。 異常發(fā)生在程序運行期間,它影響了正常的程序執(zhí)行流程。
簡單分類
- 要理解Java異常處理是如何工作的,你需要掌握以下三種類型的異常:
- 檢查性異常:最具代表的檢查性異常是用戶錯誤或問題引起的異常,這是程序員無法預見的。例如要打開一個不存在文件時,一個異常就發(fā)生了,這些異常在編譯時不能被簡單地忽略。
- 運行時異常:運行時異常是可能被程序員避免的異常。與檢查性異常相反,運行時異常可以在編譯時被忽略。
- 錯誤Error:錯誤不是異常,而是脫離程序員控制的問題。錯誤在代碼中通常被忽略。例如,當棧溢出時,一個錯誤就發(fā)生了,它們在編譯也檢查不到的
異常體系結(jié)構(gòu)
Java把異常當作對象來處理,并定義一個基類java.lang.Throwable作為所有異常的超類
在Java API中已經(jīng)定義了許多異常類,這些異常類分為兩大類,錯誤Error和異常Exception。

Error
Error類對象由 Java 虛擬機生成并拋出,大多數(shù)錯誤與代碼編寫者所執(zhí)行的操作無關。
Java虛擬機運行錯誤(VirtualMachineError),當JVM不再有繼續(xù)執(zhí)行操作所需的內(nèi)存資源時,將出現(xiàn)OutOfMemoryError。這些異常發(fā)生時,Java虛擬機(JVM)一般會選擇線程終止;
還有發(fā)生在虛擬機試圖執(zhí)行應用時,如類定義錯誤(NoClassDefFoundError)、鏈接錯誤(LinkageError)。
這些錯誤是不可查的,因為它們在應用程序的控制和處理能力之外,而且絕大多數(shù)是程序運行時不允許出現(xiàn)的狀況。
Exception
在Exception分支中有一個重要的子類RuntimeException(運行時異常)其中有:
1.ArrayIndexOutOfBoundsException(數(shù)組下標越界)
2.NullPointerException(空指針異常)
3.ArithmeticException(算術(shù)異常)
4.MissingResourceException(丟失資源)
5.ClassNotFoundException(找不到類) 等異常,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。
這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發(fā)生。
Error和Exception的區(qū)別:Error通常是災難性的致命的錯誤,是程序無法控制和處理的,當出現(xiàn)這些異常時,Java虛擬機(JVM)一般會選擇終止線程:Exception通常情況下是可以被程序處理的,并且在程序中應該盡可能的去處理這些異常。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java實戰(zhàn)之用Swing實現(xiàn)通訊錄管理系統(tǒng)
今天給大家?guī)淼氖荍ava實戰(zhàn)的相關知識,文章圍繞著Swing實現(xiàn)通訊錄管理系統(tǒng)展開,文中有非常詳細的代碼示例,需要的朋友可以參考下2021-06-06
Springboot搭建JVM監(jiān)控(Springboot + Prometheus +&n
在應用開發(fā)時,監(jiān)控報警必不可少,本文主要介紹了Springboot搭建JVM監(jiān)控(Springboot + Prometheus + Grafana),具有一定的參考價值,感興趣的可以了解一下2024-05-05
JSON復雜數(shù)據(jù)處理之Json樹形結(jié)構(gòu)數(shù)據(jù)轉(zhuǎn)Java對象并存儲到數(shù)據(jù)庫的實現(xiàn)
這篇文章主要介紹了JSON復雜數(shù)據(jù)處理之Json樹形結(jié)構(gòu)數(shù)據(jù)轉(zhuǎn)Java對象并存儲到數(shù)據(jù)庫的實現(xiàn)的相關資料,需要的朋友可以參考下2016-03-03
Java中向文件寫入數(shù)據(jù)的幾種常見方式分享
在日常開發(fā)中,肯定離不開要和文件打交道,今天就簡單羅列一下平時比較常用的創(chuàng)建文件并向文件中寫入數(shù)據(jù)的幾種方式,文中有詳細的代碼示例供大家參考,具有一定的參考價值,需要的朋友可以參考下2023-10-10
Spring boot攔截器實現(xiàn)IP黑名單的完整步驟
這篇文章主要給大家介紹了關于Spring boot攔截器實現(xiàn)IP黑名單的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring boot攔截器具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2020-06-06

