您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Java中異常處理機制try catch的流程示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
在項目中遇到try...catch...語句,因為對Java異常處理機制的流程不是很清楚,導致對相關(guān)邏輯代碼不理解。所以現(xiàn)在來總結(jié)Java異常處理機制的處理流程:
1.異常處理的機制如下:在方法中用 try... catch... 語句捕獲并處理異常,catch 語句可以有多個,用來匹配多個不同類型的異常。對于處理不了的異?;蛘咭D(zhuǎn)型的異常,在方法的聲明處通過 throws 聲明異常,通過throw語句拋出異常,即由上層的調(diào)用方法來處理該異常。
try { 邏輯程序塊 } catch(ExceptionType1 e) { 處理代碼塊1 } catch (ExceptionType2 e) { 處理代碼塊2 throw(e); // 再拋出這個"異常" }
2.Exception 是程序正常運行過程中可以預料到的意外情況,并且應該被開發(fā)者捕獲,進行相應的處理。
Exception 可以以兩種方式出現(xiàn):
一是發(fā)生在程序編譯時或運行時發(fā)生異常,是被程序拋出,用戶沒有主動拋出異常;二是用戶主動拋出異常,使用throw關(guān)鍵字主動拋出異常。該異??梢允菢I(yè)務邏輯的異常。
try { // 可能發(fā)生異常的語句 } catch(ExceptionType e) { // 處理異常語句 }
3.執(zhí)行流程
try語句塊中發(fā)生了異常
如果try語句塊中發(fā)生了異常,那么程序就會把對應的異常對象拋出,然后catch語句就會捕獲該異常并且處理。
注意:如在try語句塊的第二句語句發(fā)生異常,那么在第二句以后的語句都不會執(zhí)行了,轉(zhuǎn)到catch語句塊中開始執(zhí)行。處理完catch語句塊的內(nèi)容,就會執(zhí)行catch語句塊之后的內(nèi)容
try語句塊中沒有發(fā)生異常
如果try語句塊中沒有發(fā)生異常,那么try語句塊中的內(nèi)容會由上到下依次執(zhí)行,然后catch語句塊會全部被跳過,接下來執(zhí)行catch語句塊之后的內(nèi)容。
舉個栗子:
public class ExceptionTest { public static void main(String[] args) { for (int i = 0; i < 3; i++) { String message = ""; int a = 0; try{ if (i == 1){ throw new Exception("錯誤"); } message = "正確"; a= 123; }catch (Exception e){ message = e.getMessage(); } System.out.println( "i 等于" + i); System.out.println(message ); System.out.println("a = " + a+ "\n"); } } }
輸出結(jié)果分析:
當有i = 2時,用戶主動拋出異常,可以看到為 message= "正確";a =123;的賦值語句沒有執(zhí)行, 進入到catch語句塊中,然后再執(zhí)行catch語句塊以后的內(nèi)容message = e.getMessage(); 這里message = "錯誤",因為throw new Exception("錯誤"); 在拋出異常時賦值了message為"錯誤";
message = "錯誤"
a = 0
輸出結(jié)果
i 等于0
正確
a = 123
i 等于1
正確
a = 123
i 等于2
錯誤
a = 0
感謝各位的閱讀!關(guān)于“Java中異常處理機制try catch的流程示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。