JAVA使用try-catch語句來處理異常。
成都創(chuàng)新互聯(lián)公司專注于沙市企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),成都商城網(wǎng)站開發(fā)。沙市網(wǎng)站建設(shè)公司,為沙市等地區(qū)提供建站服務(wù)。全流程按需開發(fā)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
將有可能出現(xiàn)的異常操作放在try-catch的try部分,一旦try部分拋出異常對(duì)象,或調(diào)用某個(gè)可能拋出異常對(duì)象的方法,并且該方法拋出了異常對(duì)象,那么try立即結(jié)束執(zhí)行,轉(zhuǎn)向catch部分。所以程序?qū)l(fā)生異常后的處理放在catah部分。
比如一個(gè)異常,在當(dāng)前類你不希望處理它,而想讓調(diào)用他的類處理,那么就throw這個(gè)異常
如果想在當(dāng)前類處理,則try
catch這個(gè)異常
若是throw的話,則發(fā)現(xiàn)異常直接拋回給上層,執(zhí)行順序是:拋出異常、上層處理
若try
catch的話
try{
new
Exception();
}catch(Exception
ex){
這里處理異常
}
如果有finally塊的話
執(zhí)行順序?yàn)椋?/p>
try、catch、finally
finally無論是否有異常都將執(zhí)行。
Java中的異常處理機(jī)制已經(jīng)比較成熟,我們的Java程序到處充滿了異常的可能,如果對(duì)這些異常不做預(yù)先的處理,那么將來程序崩潰就無從調(diào)試,很難找到異常所在的位置。
河北電腦培訓(xùn)將探討一下Java中異常與錯(cuò)誤的處理方法,一起來看看。
異常與錯(cuò)誤:異常:在Java中程序的錯(cuò)誤主要是語法錯(cuò)誤和語義錯(cuò)誤,一個(gè)程序在編譯和運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤我們統(tǒng)一稱之為異常,它是VM(虛擬機(jī))通知你的一種方式,通過這種方式,VM讓你知道,你(開發(fā)人員)已經(jīng)犯了個(gè)錯(cuò)誤,現(xiàn)在有一個(gè)機(jī)會(huì)來修改它。
Java中使用異常類來表示異常,不同的異常類代表了不同的異常。
但是在Java中所有的異常都有一個(gè)基類,叫做Exception。
錯(cuò)誤:它指的是一個(gè)合理的應(yīng)用程序不能截獲的嚴(yán)重的問題。
大多數(shù)都是反常的情況。
錯(cuò)誤是VM的一個(gè)故障(雖然它可以是任何系統(tǒng)級(jí)的服務(wù))。
所以,錯(cuò)誤是很難處理的,一般的開發(fā)人員(當(dāng)然不是你)是無法處理這些錯(cuò)誤的,比如內(nèi)存溢出。
和異常一樣,在Java中用錯(cuò)誤類來表示錯(cuò)誤,不同的錯(cuò)誤類代表了不同的錯(cuò)誤。
但是在Java中所有的錯(cuò)誤都有一個(gè)基類,叫做Error。
綜上,我們可以知道異常和錯(cuò)誤最本質(zhì)的區(qū)別就是異常能被開發(fā)人員處理而錯(cuò)誤時(shí)系統(tǒng)本來自帶的,一般無法處理也不需要我們程序員來處理。
1.一個(gè)異常是在一個(gè)程序執(zhí)行過程中出現(xiàn)的一個(gè)事件,它中斷了正常指令的運(yùn)行2.錯(cuò)誤,偏離了可接受的代碼行為的一個(gè)動(dòng)作或?qū)嵗惓5慕Y(jié)構(gòu)分類:1、運(yùn)行時(shí)異常(未檢查異常)2、編譯時(shí)異常(已檢查異常)運(yùn)行異常即是RuntimeException;其余的全部為編譯異常在Java中異常Exception和錯(cuò)誤Error有個(gè)共同的父類Throwable。
ErrorExceptionruntimeException幾個(gè)子類1、java.lang.ArrayIndexOutOfBoundsException數(shù)組索引越界異常。
當(dāng)對(duì)數(shù)組的索引值為負(fù)數(shù)或大于等于數(shù)組大小時(shí)拋出。
2、java.lang.ArithmeticException算術(shù)條件異常。
譬如:整數(shù)除零等。
3、java.lang.NullPointerException空指針異常。
當(dāng)應(yīng)用試圖在要求使用對(duì)象的地方使用了null時(shí),拋出該異常。
譬如:調(diào)用null對(duì)象的實(shí)例方法、訪問null對(duì)象的屬性、計(jì)算null對(duì)象的長度、使用throw語句拋出null等等4、java.lang.ClassNotFoundException找不到類異常。
當(dāng)應(yīng)用試圖根據(jù)字符串形式的類名構(gòu)造類,而在遍歷CLASSPAH之后找不到對(duì)應(yīng)名稱的class文件時(shí),拋出該異常。
Java通過面向?qū)ο蟮姆椒ㄟM(jìn)行異常處理,把各種不同的異常進(jìn)行分類,并提供了良好的接口。在Java中,每個(gè)異常都是一個(gè)對(duì)象,它是Throwable類或其它子類的實(shí)例。當(dāng)一個(gè)方法出現(xiàn)異常后便拋出一個(gè)異常對(duì)象,該對(duì)象中包含有異常信息,調(diào)用這個(gè)對(duì)象的方法可以捕獲到這個(gè)異常并進(jìn)行處理。Java的異常處理是通過5個(gè)關(guān)鍵詞來實(shí)現(xiàn)的:try、catch、throw、throws和finally。一般情況下是用try來執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)會(huì)拋出(throws)一個(gè)異常,這時(shí)候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理。\x0d\x0a用try來指定一塊預(yù)防所有異常的程序。緊跟在try程序后面,應(yīng)包含一個(gè)catch子句來指定你想要捕捉的異常的類型。\x0d\x0athrow語句用來明確地拋出一個(gè)異常。\x0d\x0athrows用來標(biāo)明一個(gè)成員函數(shù)可能拋出的各種異常。\x0d\x0a可以在一個(gè)成員函數(shù)調(diào)用的外面寫一個(gè)try語句,在這個(gè)成員函數(shù)內(nèi)部寫另一個(gè)try語句保護(hù)其他代碼。每當(dāng)遇到一個(gè)try語句,異常的框架就放到堆棧上面,直到所有的try語句都完成。