Java異常體系非正常停止和分類
一、異常概念
異常,就是不正常的意思。在生活中:醫(yī)生說,你的身體某個(gè)部位有異常,該部位和正常相比有點(diǎn)不同,該部位的功能將受影響.在程序中的意思就是:
- 異常 :指的是程序在執(zhí)行過程中,出現(xiàn)的非正常的情況,最終會(huì)導(dǎo)致JVM的非正常停止。
在Java等面向?qū)ο蟮木幊陶Z言中,異常本身是一個(gè)類,產(chǎn)生異常就是創(chuàng)建異常對(duì)象并拋出了一個(gè)異常對(duì)象。Java處理異常的方式是中斷處理。
異常指的并不是語法錯(cuò)誤,語法錯(cuò)了,編譯不通過,不會(huì)產(chǎn)生字節(jié)碼文件,根本不能運(yùn)行.
二、異常體系
異常機(jī)制其實(shí)是幫助我們找到程序中的問題,異常的根類是java.lang.Throwable
,其下有兩個(gè)子類:java.lang.Error
與java.lang.Exception
,平常所說的異常指java.lang.Exception
。
Throwable體系:
- Error:嚴(yán)重錯(cuò)誤Error,無法通過處理的錯(cuò)誤,只能事先避免,好比絕癥。
- Exception:表示異常,異常產(chǎn)生后程序員可以通過代碼的方式糾正,使程序繼續(xù)運(yùn)行,是必須要處理的。好比感冒、闌尾炎。
Throwable中的常用方法:
public void printStackTrace()
:打印異常的詳細(xì)信息。
包含了異常的類型,異常的原因,還包括異常出現(xiàn)的位置,在開發(fā)和調(diào)試階段,都得使用printStackTrace。
public String getMessage()
:獲取發(fā)生異常的原因。
提示給用戶的時(shí)候,就提示錯(cuò)誤原因。
public String toString()
:獲取異常的類型和異常描述信息(不用)。
出現(xiàn)異常,不要緊張,把異常的簡單類名,拷貝到API中去查。
三、異常分類
我們平常說的異常就是指Exception,因?yàn)檫@類異常一旦出現(xiàn),我們就要對(duì)代碼進(jìn)行更正,修復(fù)程序。 異常(Exception)的分類:根據(jù)在編譯時(shí)期還是運(yùn)行時(shí)期去檢查異常?
- 編譯時(shí)期異常:checked異常。在編譯時(shí)期,就會(huì)檢查,如果沒有處理異常,則編譯失敗。(如日期格式化異常)
- 運(yùn)行時(shí)期異常:runtime異常。在運(yùn)行時(shí)期,檢查異常.在編譯時(shí)期,運(yùn)行異常不會(huì)編譯器檢測(不報(bào)錯(cuò))。(如數(shù)學(xué)異常)
四、異常的產(chǎn)生過程解析
先運(yùn)行下面的程序,程序會(huì)產(chǎn)生一個(gè)數(shù)組索引越界異常ArrayIndexOfBoundsException。我們通過圖解來解析下異常產(chǎn)生的過程。 工具類
public class ArrayTools { // 對(duì)給定的數(shù)組通過給定的角標(biāo)獲取元素。 public static int getElement(int[] arr, int index) { int element = arr[index]; return element; } }
測試類:
public class ExceptionDemo { public static void main(String[] args) { int[] arr = { 34, 12, 67 }; intnum = ArrayTools.getElement(arr, 4) System.out.println("num=" + num); System.out.println("over"); } }
上述程序執(zhí)行過程圖解:
到此這篇關(guān)于Java異常體系非正常停止和分類的文章就介紹到這了,更多相關(guān)Java異常體系 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你一步到位部署運(yùn)行MyBatis3源碼(保姆級(jí))
一個(gè)框架的運(yùn)行流程從最簡單的一個(gè)helloworld來看其源碼就能了解到框架的原理是什么,這篇文章主要給大家介紹了關(guān)于如何一步到位部署運(yùn)行MyBatis3源碼的相關(guān)資料,需要的朋友可以參考下2022-06-06