java拋出異常與finally實(shí)例解析

這篇文章主要介紹了java拋出異常與finally實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

成都創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷策劃、成都小程序開(kāi)發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開(kāi)發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十年以來(lái),已經(jīng)為上1000家封陽(yáng)臺(tái)各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的上1000家客戶與我們一路同行,見(jiàn)證我們的成長(zhǎng);未來(lái),我們一起分享成功的喜悅。

java拋出異常與finally實(shí)例解析

代碼如下:

package test1;
public class EmbededFinally {  
  public static void main(String args[]) {    
    int result;    
    try {      
      System.out.println("in Level 1");      
       try {        
        System.out.println("in Level 2");
 // result=100/0; //Level 2
        
         try {
          
           System.out.println("in Level 3");
           
           result=100/0; //Level 3        
        }        
        catch (Exception e) {          
          System.out.println("Level 3:" + e.getClass().toString());        
        }                
        finally {          
          System.out.println("In Level 3 finally");        
        }               
        // result=100/0; //Level 2
      
        }      
      catch (Exception e) {
        
         System.out.println("Level 2:" + e.getClass().toString());
      
       }
       finally {
                System.out.println("In Level 2 finally");      
       }       
      // result = 100 / 0; //level 1
    
    }     
    catch (Exception e) {
            System.out.println("Level 1:" + e.getClass().toString());
    
    }    
    finally {      
       System.out.println("In Level 1 finally");    
    } 
  }
}

java拋出異常與finally實(shí)例解析

運(yùn)行結(jié)果如上圖:

對(duì)于代碼的分析: 前三行輸出結(jié)果,是try中三個(gè)正常的輸出語(yǔ)句,并且在最后拋出了一個(gè)by zero錯(cuò)誤。然后用catch語(yǔ)句捕捉了這個(gè)語(yǔ)句,并且輸出了語(yǔ)句。但我們會(huì)發(fā)現(xiàn)后面的catch語(yǔ)句都沒(méi)有被執(zhí)行,而是直接執(zhí)行了finally語(yǔ)句,說(shuō)明finally語(yǔ)句改變了代碼中輸出的邏輯。但具體的原因尚不明確。

最后,提出一個(gè)小問(wèn)題:finally語(yǔ)句一定會(huì)執(zhí)行嗎?

我姑且自己回答一下,如果在finally之前使用了exit,退出了程序,那么finally語(yǔ)句就不會(huì)執(zhí)行了。

比如,我們用以下的測(cè)試代碼:

package test1;
public class SystemExitAndFinally {
	public static void main(String[] args)
	 {
		try{
			System.out.println("in main");
			throw new Exception("Exception is thrown in main");
			//System.exit(0);
		}
		catch(Exception e)
		    {
			System.out.println(e.getMessage());
			System.exit(0);
		}
		finally
		    {
			System.out.println("in finally");
		}
	}
}

運(yùn)行結(jié)果如圖:

java拋出異常與finally實(shí)例解析

我們可以看到,finally后的語(yǔ)句并沒(méi)有被輸出,而在退出程序前的語(yǔ)句并沒(méi)有任何影響。

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

網(wǎng)頁(yè)題目:java拋出異常與finally實(shí)例解析
網(wǎng)頁(yè)網(wǎng)址:http://muchs.cn/article40/ghedho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名商城網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站、用戶體驗(yàn)、App設(shè)計(jì)

廣告

聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)