java異常體系_JAVA異常體系結構詳解

一、什么是異常

異常:程序在運行過程中發生由于硬件設備問題、軟件設計錯誤等導致的程序異常事件。(在Java等面向對象的編程語言中)異常本身是一個對象,產生異常就是產生了一個異常對象。????? ——百度百科

二、異常體系

Java把異常當作對象來處理,并定義一個基類java.lang.Throwable作為所有異常的超類。 在Java API中已經定義了許多異常類,這些異常類分為兩大類,錯誤Error和異常Exception。?? 其中異常類Exception又分為運行時異常(RuntimeException)和非運行時異常,? 這兩種異常有很大的區別,也稱之為非受檢查異常(Unchecked Exception)

和受檢查異常(Checked Exception)。

Java異常體系結構如圖 所示:

acab23679483aa4ed1562fe41eb86226.png

1、Error與Exception

Errorr往往是很嚴重的錯誤,是程序無法處理的異常,可以捕獲但是最好不要捕獲,因為捕獲了也解決不了,這個不是由程序產出的,底層出現問題就讓他它掛了吧,比如內存溢出(OutOfMemoryError)、線程死亡(ThreadDeath)等。這些異常發生時,? Java虛擬機(JVM)一般會選擇線程終止。

下圖為程序模擬的內存溢出情景:

1f1c39cb4892ea72d8fd28c7cd346440.png

Exception是程序本身可以處理的異常,這種異常分兩大類運行時異常和非運行時異常。 程序中應當盡可能去處理這些異常。

2、運行時異常和非運行時異常

運行時異常都是RuntimeException類及其子類異常,常見的異常有:空指針異常(NullPointerException)、下標越界異常(IndexOutOfBoundsException)、算術異常(ArithmaticException)、類型轉換異常(ClassCastException)? 等,這些異常一般是由程序邏輯錯誤引起的,? 程序應該從邏輯角度盡可能避免這類異常的發生。

下面將模擬這幾個運行時異常發生的場景:

1)數組下標越界異常

8ec99c05aac697c839b7fe5182b0572f.png

以數組下標越界異常為例分析發生的現象,在程序運行時,JVM能夠檢測到沒有a[3]這個索引,當檢測到數組下標越界異常后,JVM做了兩件事:

1創建出異常對象? new ArrayIndexOutOfBoundsException(3);

2將異常對象拋出,拋給它的調用者。注:一旦異常被拋出,后面的程序就不再執行。

當它的調用者沒有對異常進行處理時,它的調用者繼續將異常向上拋出。以此類推,當main接收到這個異常也沒有對數組下標越界異常進行處理時,main就將異常拋給了JVM,JVM收到異常信息后又做了兩件事:

1將異常信息以紅色字體輸出到控制臺上;

2停止程序的運行。

2)空指針異常

4386f0e8a0912e575fd359fb64533cfd.png

3)算數異常 除數為0

790f9457fcdb8dab1d0337b9d3b7c074.png

4)類型轉換異常

83b542898af12a6974df671d2e5a6bb6.png

非運行時異常是RuntimeException以外的異常,類型上都屬于Exception類及其子類。

從程序語法角度講是必須進行處理的異常,如果不處理,程序就不能編譯通過,如IO異常(IOException)、SQL(SQLException)等以及用戶自定義的Exception異常。

下圖顯示的是IOException中的FileNotFoundException:

167d83486fba4d879680e0c333a66d54.png

總結

以上所述是小編給大家介紹的JAVA異常體系結構詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378816.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378816.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378816.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

對照片質量進行壓縮

對照片質量進行壓縮 其實無論是jpg還是png都是已經壓縮編碼化的格式罷了,原圖片的大小要遠遠大于壓縮編碼后的格式 1,像素:圖片放大到一定程度之后的一個個的小方塊 2,RGB:每一個像素(小方塊)都…

Silverlight訪問 Apache服務器(Tomcat,Geronimo)中部署的Webservice

Silverlight 訪問 Apache服務器中的Webservice 開發環境 Vs2010 、 Silverlight4 、 Java Jdk1.6 U 21 、 Apache-tomcat-6.0.20 、 Myeclipse8.5 、 Apache-ant-1.8.1 、 Axis2 、 Geronimo-tomcat6-javaee5-2.2. 下載地址: Apache-tomcat : http://apa…

那些幫助你成為優秀前端工程師的講座——《性能篇》

這篇文章是前端優秀講座和討論列表系列連載第七篇,介紹前端性能優化技巧。前端領域發展迅速,只有時刻掌握前端發展趨勢和技術動態,學習前沿的開發思想和理念才能讓自己跟上時代的步伐,保持自己的技術優勢。 您可能感興趣的相關文章…

mca終端_MCA的完整形式是什么?

mca終端1)MCA:計算機應用碩士 (1) MCA: Master of Computer Application) MCA is an abbreviation of Master of Computer Application. It is a masters degree program for post-graduation in Computer applications. This post-graduate course duration is abo…

鋼鐵俠java_現代版“鋼鐵俠”,無所不能的程序員,java工程師實現人造器官!...

一位名叫利亞姆澤貝迪(Liam Zebedee)的軟件工程師已經厭倦了糖尿病患者的生活挑戰,因此他決定入侵他的胰島素泵,并將其轉變成一種嶄新的高科技胰腺胰腺。Zebedee詳細介紹了查找和訂購零件的過程,為智能胰島素泵編寫軟件的代碼以及在其博客中組…

Windows下的Memcache安裝 (轉)

Windows下的Memcache安裝:1. 下載memcache的windows穩定版,解壓放某個盤下面,比如在c:\memcached2. 在終端(也即cmd命令界面)下輸入 ‘c:\memcached\memcached.exe -d install’ 安裝3. 再輸入: ‘c:\memca…

C#中實現js中的eval函數功能

在js中有eval函數,比如 eval(‘33*4’)結果為15; 但C#中想要完成這樣的功能,卻沒有相應的函數,可以用sql語句的方式實現,比如,執行 select 33*4 的方式。 可以先構造公式 Formula …

查看照片的指定位置的像素點值,并在照片中繪制一條指定像素顏色的線段

查看照片的指定位置的像素點值,并在照片中繪制一條指定像素的線段 import cv2 img cv2.imread(E:\Python-workspace\OpenCV\yanyu/beyond.png,1)#1為彩色圖片,0為灰度圖片 (b,g,r) img[20,20]#取照片的(20,20)處的像素點,左上角為(0,0)&am…

大數據和云計算涉及的技術_云計算涉及的風險

大數據和云計算涉及的技術In todays life using of cloud is very common among people, we use different clouds like Google cloud, cloud Azure etc. to store our photos, Videos, documents, data etc. to save space as well as we think that we will be able to retri…

int 轉interger java_Java中Integer和int之間的轉換

int到Integer:int a3;Integer Anew Integer(a);或:Integer AInteger.valueOf(a);Integer到int:Integer Anew Integer(5);int aA.intValue();至于Integer.parseInt(String str)則是將String類型轉為int類型。int類型是放在棧空間的,Integer是作為對象放在堆空間的;in…

圖像分割-二階導數零交叉點的含義

已知: 二階導數在灰度斜坡和灰度臺階過渡處會產生雙邊緣響應。 二階導數的符號可以用于確定邊緣的過渡是從亮到暗還是暗到亮。 斜坡開始處,二階導數為負,斜坡結束二階導數為正,斜坡上,二階導數為0.(亮到暗…

采購子系統-流程圖、表結構、內容簡介

設計說明: 流程圖: 表結構: -- {*******************************************************} -- { } -- { GSP } -- { …

題目53:Goldbach's Conjecture

http://ac.jobdu.com/problem.php?cid1040&pid52 題目描述:Goldbachs Conjecture: For any even number n greater than or equal to 4, there exists at least one pair of prime numbers p1 and p2 such that n p1 p2. This conjecture has not been prov…

Anaconda下安裝TensorFlow和OpenCV(都是心血呀~)

從國慶放假到現在的6號,我整整搞了將近五天多。安裝個TensorFlow和OpenCV不下五次,各種問題各種解決,下載后卸載,卸載后下載,我快吐了啊這個國慶,但是最終還是達到了自己的目標(我太難了&#x…

圖像分割-基本邊緣檢測roberts,prewitt,sobel,canny,laplace

執行邊緣檢測的三個基本步驟: 1、為降噪對圖像進行平滑處理。(導數對噪聲具有敏感性。圖像的正負分量檢測困難) 2、邊緣點的檢測。(提取邊緣點的潛在候選者) 3、邊緣定位。(從候選者中選出真是邊緣點成員&a…

goroutine并發掃描MySQL表_goroutine 并發之搜索文件內容

golang并發編程 - 例子解析February 26, 2013最近在看《Programming in Go》, 其中關于并發編程寫得很不錯, 受益非淺, 其中有一些例子是需要多思考才能想明白的, 所以我打算記錄下來, 強化一下思路《Programming in Go》在 Chapter 7. Concurrent Programming 里面一共用3個例…

軟件開發模型和軟件過程模型_什么是軟件和軟件過程?

軟件開發模型和軟件過程模型軟件 (Software) Software is a set of instructions which instructs the computer for performing different operations. Software is nothing else but a general name for computer programs. 軟件是一組指令,指導計算機執行不同的操…

甲骨文CEO埃里森稱將在Sun裁員1000人

據國外網站報道,甲骨文CEO拉利埃里森周三表示,在完成對Sun的收購后,將對該公司裁員1000人。不過他同時也表示,未來幾個月還要新雇2000人加強Sun的業務。 分析師們曾預測甲骨文完成收購后,將在Sun大裁員。不過埃里森和甲…

改變Jupyter的默認項目路徑

開始接觸Jupyter,看見它默認的工作路徑是C盤,很難受想換下工作空間路徑 管理員身份打開你的Anaconda Prompt 輸入jupyter notebook --generate-config,找到你的配置文件位置 修改一下路徑即可 一般情況到這一步就已經修改成功了&#xff…

arm-linux-gcc/ld/objcopy/objdump使用總結[zz]

地址:http://hi.baidu.com/xiaoyue1800/item/a11a2c4a26da4b04c11613d9arm-linux工具的功能如下:arm-linux-addr2line 把程序地址轉換為文件名和行號。在命令行中給它一個地址和一個可執行文件名,它就會使用這個可執行文件的調試信息指出在給…