Java程序常見異常及處理匯總-創(chuàng)新互聯(lián)

一、JDK中常見的異常情況

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)銅陵,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

1、常見異常總結(jié)圖

Java程序常見異常及處理匯總

2、java中異常分類

Throwable類有兩個(gè)直接子類:

(1)Exception:出現(xiàn)的問題是可以被捕獲的

(2)Error:系統(tǒng)錯(cuò)誤,通常由JVM處理

3、被捕獲的異常分類

(1)Check異常: 派生自Exception的異常類,必須被捕獲或再次聲明拋出

(2)Runtime異常:派生自RuntimeException的異常類。使用throw語句可以隨時(shí)拋出這種異常對(duì)象 throw new ArithmeticException(…);

二、發(fā)生異常的原因

1、用戶輸入了非法數(shù)據(jù)。

2、要打開的文件不存在。

3、網(wǎng)絡(luò)通信是連接中斷

4、JVM內(nèi)存溢出

三、java程序中幾種常見的異常以及出現(xiàn)此異常的原因

1、java.lang.NullpointerException(空指針異常)

原因:這個(gè)異常經(jīng)常遇到,異常的原因是程序中有空指針,即程序中調(diào)用了未經(jīng)初始化的對(duì)象或者是不存在的對(duì)象。

經(jīng)常出現(xiàn)在創(chuàng)建對(duì)象,調(diào)用數(shù)組這些代碼中,比如對(duì)象未經(jīng)初始化,或者圖片創(chuàng)建時(shí)的路徑錯(cuò)誤等等。對(duì)數(shù)組代碼

中出現(xiàn)空指針,是把數(shù)組的初始化和數(shù)組元素的初始化搞混淆了。數(shù)組的初始化是對(duì)數(shù)組分配空間,而數(shù)組元素的

初始化,是給數(shù)組中的元素賦初始值

2、 java.lang.ClassNotFoundException(指定的類不存在)

原因:當(dāng)試圖將一個(gè)String類型數(shù)據(jù)轉(zhuǎn)換為指定的數(shù)字類型,但該字符串不滿足數(shù)值型數(shù)據(jù)的要求時(shí),就拋出這個(gè)異

常。例如將String類型的數(shù)據(jù)"123456"轉(zhuǎn)換為數(shù)值型數(shù)據(jù)時(shí),是可以轉(zhuǎn)換的的。但是如果String類型的數(shù)據(jù)中包含了

非數(shù)字型的字符,如123*56,此時(shí)轉(zhuǎn)換為數(shù)值型時(shí)就會(huì)出現(xiàn)異常。系統(tǒng)就會(huì)捕捉到這個(gè)異常,并進(jìn)行處理

3、java.lang.ClassNotFoundExceptio(指定的類不存在)

原因:是因?yàn)轭惖拿Q和路徑不正確,通常都是程序試圖通過字符串來加載某個(gè)類的時(shí)候可能會(huì)引發(fā)異常。例如:

調(diào)用Class.forName()、或者調(diào)用ClassLoad的finaSystemClass()、或者是LoadClass()時(shí)出現(xiàn)異常

4、java.lang.IndexOutOfBoundsException(數(shù)組下標(biāo)越界異常)

原因:查看程序中調(diào)用的數(shù)組或者字符串的下標(biāo)值是不是超出了數(shù)組的范圍,一般來說,顯示調(diào)用數(shù)組不太容易出這

樣的錯(cuò),但隱式調(diào)用就有可能出錯(cuò)了,還有一種情況,是程序中定義的數(shù)組的長(zhǎng)度是通過某些特定方法決定的,不是

事先聲明的,這個(gè)時(shí)候可以先查看一下數(shù)組的length,以免出現(xiàn)這個(gè)異常

5、java.lang.IllegalArgumentException(方法的參數(shù)錯(cuò)誤)

例如g.setColor(int red,int green,int blue)這個(gè)方法中的三個(gè)值,如果有超過255的會(huì)出現(xiàn)這個(gè)異常,如果程

序中存在這個(gè)異常,就要去檢查一下方法調(diào)用中的參數(shù)傳遞或參數(shù)值是不是有錯(cuò)

6、java.lang.IllegalAccessException(沒有訪問權(quán)限)

當(dāng)程序要調(diào)用一個(gè)類,但當(dāng)前的方法即沒有對(duì)該類的訪問權(quán)限便會(huì)出現(xiàn)這個(gè)異常。如果程序中用了Package的情況下

有可能出現(xiàn)這個(gè)異常

7、java.lang.ArithmeticException(數(shù)學(xué)運(yùn)算異常)

當(dāng)數(shù)學(xué)運(yùn)算中出現(xiàn)了除以零這樣的運(yùn)算就會(huì)出這樣的異常。

8、java.lang.ClassCastException(數(shù)據(jù)類型轉(zhuǎn)換異常)

當(dāng)試圖將對(duì)某個(gè)對(duì)象強(qiáng)制執(zhí)行向下轉(zhuǎn)換,但該對(duì)象又不可轉(zhuǎn)換或又不可轉(zhuǎn)換為其子類的實(shí)例時(shí)將出現(xiàn)該異常

9、 java.lang.FileNotFoundException(文件未找到異常)

當(dāng)程序打開一個(gè)不存在的文件來進(jìn)行讀寫時(shí)將會(huì)引發(fā)該異常。該異常由FileInputStream,FileOutputStream,

RandomAccessFile的構(gòu)造器聲明拋出,即使被操作的文件存在,但是由于某些原因不可訪問,比如打開一個(gè)

只有只讀權(quán)限的文件并向其中寫入數(shù)據(jù),以上構(gòu)造方法依然會(huì)引發(fā)異常

10、java.lang.ArrayStoreException(數(shù)組存儲(chǔ)異常)

當(dāng)試圖將類型為不兼容類型的對(duì)象存入一個(gè)Object[]數(shù)組時(shí)將引發(fā)異常

11、java.lang.NoSuchMethodException(方法不存在異常)

當(dāng)程序試圖通過反射來創(chuàng)建對(duì)象,訪問(修改或讀取)某個(gè)方法,但是該方法不存在就會(huì)引發(fā)異常。

12、 java.lang.EOFException(文件已結(jié)束異常)

當(dāng)程序在輸入的過程中遇到文件或流的結(jié)尾時(shí),引發(fā)異常。因此該異常用于檢查是否達(dá)到文件或流的結(jié)尾

13、java.lang.InstantiationException(實(shí)例化異常)

當(dāng)試圖通過Class的newInstance()方法創(chuàng)建某個(gè)類的實(shí)例,但程序無法通過該構(gòu)造器來創(chuàng)建該對(duì)象時(shí)引發(fā)。

Class對(duì)象表示一個(gè)抽象類,接口,數(shù)組類,基本類型 。該Class表示的類沒有對(duì)應(yīng)的構(gòu)造器。

14、java.lang.InterruptedException(被中止異常)

當(dāng)某個(gè)線程處于長(zhǎng)時(shí)間的等待、休眠或其他暫停狀態(tài),而此時(shí)其他的線程通過Thread的interrupt方法終止該線程時(shí)拋出該異常。

15、java.lang.CloneNotSupportedException (不支持克隆異常)

當(dāng)沒有實(shí)現(xiàn)Cloneable接口或者不支持克隆方法時(shí),調(diào)用其clone()方法則拋出該異常

16、java.lang.OutOfMemoryException (內(nèi)存不足錯(cuò)誤)

當(dāng)可用內(nèi)存不足以讓Java虛擬機(jī)分配給一個(gè)對(duì)象時(shí)拋出該錯(cuò)誤

17、java.lang.NoClassDefFoundException (未找到類定義錯(cuò)誤)

當(dāng)Java虛擬機(jī)或者類裝載器試圖實(shí)例化某個(gè)類,而找不到該類的定義時(shí)拋出該錯(cuò)誤

四、Java異常處理的總結(jié)

1、不要丟棄異常,捕獲異常后需要進(jìn)行相關(guān)處理。如果用戶覺得不能很好地處理該異常,就讓它繼續(xù)傳播,傳到別的地方去處理,或者把一個(gè)低級(jí)的異常轉(zhuǎn)換成應(yīng)用級(jí)的異常,重新拋出

2、catch語句應(yīng)該指定具體的異常類型。不能把不該捕獲的異常也捕獲了

3、在finally里面釋放資源。如果finally里面也會(huì)拋出異常,也一樣需要使用try..catch處理

4、不要把大量的代碼塞在try...catch塊里面,分離各個(gè)可能出現(xiàn)異常的語句并分別捕獲異常

5、由于異常可能導(dǎo)致輸出的數(shù)據(jù)不完整,因此用戶需要作出相對(duì)應(yīng)的處理,至少應(yīng)該提示該數(shù)據(jù)的不完整

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)建站。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、建站服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章標(biāo)題:Java程序常見異常及處理匯總-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://muchs.cn/article30/pcdso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站制作、搜索引擎優(yōu)化、定制開發(fā)、商城網(wǎng)站、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)