大家好滨砍,我是IT修真院,一枚正直純潔善良的如剛?cè)腴T的Java程序員,今天跟大家分享一下修真院官網(wǎng)JAVA任務(wù)一妖异,深度思考中的知識點——異常處理的原因惋戏,try/catch的應(yīng)用場景。
1. 知識背景
異常exception
異常是程序中的一些錯誤他膳,但并不是所有的錯誤都是異常响逢,并且錯誤有時候是可以避免的。
異常發(fā)生的原因有很多棕孙,通常包含以下幾大類:
1.用戶輸入了非法數(shù)據(jù)舔亭。
2.要打開的文件不存在些膨。
3.網(wǎng)絡(luò)通信時連接中斷,或者JVM內(nèi)存溢出钦铺。
Try/catch語法
使用 try 和 catch 關(guān)鍵字可以捕獲異常订雾。
try/catch 代碼塊放在異常可能發(fā)生的地方矛洞。try/catch代碼塊中的代碼稱為保護(hù)代碼洼哎。
一個 try 代碼塊可以后面跟隨多個 catch 代碼塊,叫多重捕獲缚甩。
如果一個方法沒有捕獲一個檢查性異常谱净,那么該方法必須使用 throws 關(guān)鍵字來聲明。throws 關(guān)鍵字放在方法簽名的尾部擅威。也可以使用 throw 關(guān)鍵字拋出一個異常,無論它是新實例化的還是剛捕獲到的冈钦。
2. 知識剖析
java如何處理異常郊丛?
java提供了拋出異常捕獲異常的邏輯用于處理異常,當(dāng)程序拋出異常時瞧筛,如果不存在捕獲異常邏輯厉熟,正在執(zhí)行的方法將停止執(zhí)行,并將該異常向外拋出较幌,調(diào)用該方法的程序進(jìn)行同樣的處理揍瑟,如果也沒有進(jìn)行捕獲,則將一層一層的向外拋出乍炉,直到到達(dá)當(dāng)前線程處時將會終止線程的執(zhí)行绢片。
3. 常見問題
在什么場景下加Try-Catch機(jī)制
Try-Catch機(jī)制注意點
4. 解決方案
1)以業(yè)務(wù)邏輯功能為單位,在最上層加Try-Catch機(jī)制岛琼。為什么要這樣做呢底循?這主要是增加程序的健壯性,防止因拋出異常過多槐瑞,導(dǎo)致程序崩潰熙涤。
2)底層代碼,在可能出錯的地方加Try-Catch機(jī)制困檩,用Catch偵測具體的異常祠挫,然后就具體的異常,采取相應(yīng)的解決方案悼沿。
3)底層代碼等舔,在需異常追蹤時加Try-Catch機(jī)制,在Catch塊中拋出自定義異常显沈,調(diào)試時可迅速定位到錯誤代碼段软瞎。
Try-Catch機(jī)制會將異常屏蔽掉逢唤,必須根據(jù)具體的應(yīng)用場景,具體分析涤浇。
5. 編碼實戰(zhàn)
先構(gòu)造一個方法用來表示catch執(zhí)行
6. 擴(kuò)展思考
catch 體里遇到 return 是怎么處理鳖藕?
finally 體遇到 return 怎么辦?
finally 體里有 System.exit() 方法怎么處理只锭?
當(dāng) catch 和 finally 體里同時遇上 return 怎么辦著恩?
(假設(shè)方法需要返回值)java 的異常處理中,
在不拋出異常的情況下蜻展,程序執(zhí)行完 try 里面的代碼塊之后喉誊,該方法并不會立即結(jié)束,而是繼續(xù)試圖去尋找該方法有沒有 finally 的代碼塊纵顾,
如果沒有 finally 代碼塊伍茄,整個方法在執(zhí)行完 try 代碼塊后返回相應(yīng)的值來結(jié)束整個方法;
如果有 finally 代碼塊施逾,此時程序執(zhí)行到 try 代碼塊里的 return 語句之時并不會立即執(zhí)行 return敷矫,而是先去執(zhí)行 finally 代碼塊里的代碼,
若 finally 代碼塊里沒有 return 或沒有能夠終止程序的代碼汉额,程序?qū)⒃趫?zhí)行完 finally 代碼塊代碼之后再返回 try 代碼塊執(zhí)行 return 語句來結(jié)束整個方法曹仗;
若 finally 代碼塊里有 return 或含有能夠終止程序的代碼,方法將在執(zhí)行完 finally 之后被結(jié)束蠕搜,不再跳回 try 代碼塊執(zhí)行 return怎茫。
7. 參考文獻(xiàn)
http://www.cnblogs.com/tianzhiliang/archive/2010/10/09/1846676.html
http://www.blogjava.net/fancydeepin/archive/2012/07/08/java_try-catch-finally.html
https://www.cnblogs.com/zouheng/p/6706114.html
今天的分享就到這里啦,歡迎大家點贊妓灌、轉(zhuǎn)發(fā)轨蛤、留言、拍磚~
技能樹.IT修真院
“我們相信人人都可以成為一個工程師旬渠,現(xiàn)在開始俱萍,找個師兄,帶你入門告丢,掌控自己學(xué)習(xí)的節(jié)奏枪蘑,學(xué)習(xí)的路上不再迷茫”岖免。
這里是技能樹.IT修真院岳颇,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化颅湘,成長可見化话侧,師兄1對1免費指導(dǎo)〈巢危快來與我一起學(xué)習(xí)吧~
作者:閔仕宇
不足之處瞻鹏,歡迎指正~