小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

try/catch/finally測(cè)試

 posondlq 2012-09-12

try/catch/finally測(cè)試  

結(jié)論:
1、如果某個(gè)異常發(fā)生的時(shí)候沒(méi)有在任何地方捕獲它,程序就會(huì)終止執(zhí)行,并在控制臺(tái)上顯示異常信息
2、不管是否有異常被捕獲,finally子句中的代碼都會(huì)執(zhí)行
3、當(dāng)代碼拋出一個(gè)異常時(shí),就會(huì)終止對(duì)方法中剩余代碼的處理,并退出這個(gè)方法
4、finally后面的代碼被執(zhí)行的條件:
    a、代碼沒(méi)有拋出異常
    或者b、代碼拋出異常被捕獲,而且捕獲的時(shí)候沒(méi)有再拋出異常
5、建議用try/catch和try/finally語(yǔ)句塊,前者是將異常攔截;而后者是為了將異常送出去,并執(zhí)行所需代碼
6、finally優(yōu)先于try中的return語(yǔ)句執(zhí)行,所以finally中,如果有return,則會(huì)直接返回,而不是調(diào)用try中的return;catch中的return也是一樣,也就是說(shuō),在return之前,肯定會(huì)先調(diào)用finally中的return

例1:
// 測(cè)試捕獲異常后,再次拋出異常,不會(huì)執(zhí)行finally后面的語(yǔ)句// 1
// 因?yàn)榫幾g就通不過(guò),直接報(bào):unreacchable statement
private static String testTryCatch() throws Exception
{
  try
  {
    throw new Exception();
  }
  catch (Exception e)
  {
    // 捕獲異常后再次拋出異常    
    throw new Exception();
  }
  finally
  {
    System.out.println("finally");  
  }
  return "after finally";  // 1
}

例2:
// 測(cè)試異常被捕獲,會(huì)繼續(xù)執(zhí)行finally后面的語(yǔ)句// 1
private static void testTryCatch()
{
  try
  {
    throw new Exception();
  }
  catch (Exception e)
  {
    e.printStackTrace();
    System.out.println("exception");
  }
  finally
  {
    System.out.println("finally");  
  }
  System.out.println("after finally");    // 1
}
// 輸出:
java.lang.Exception
    at Main.testTryCatch(Main.java:39)
    at Main.main(Main.java:10)
exception
finally
after finally

例3:
// 測(cè)試finally中的return優(yōu)先級(jí)最高
private static String testTryCatch()
{
  try
  {
    throw new Exception();
  }
  catch (Exception e)
  {
    e.printStackTrace();
    return "exception";    // 2
  }
  finally
  {
    return "finally";        // 1    
  }
}
// 輸出
最后返回的結(jié)果是// 1中的"finally"

例4:
public static void main(String[] args)
    {
        Test test = new Test();
        try
        {
            test.testTryCatch();
        }
        catch (Exception e)
        {
            System.out.println("exception");    // 3
        }
    }
   
    // 測(cè)試try/finally語(yǔ)句塊拋出異常的執(zhí)行順序
    private void testTryCatch() throws Exception
    {
      try
      {
          System.out.println("try");        // 1
          throw new Exception();
      }
      finally
      {
        System.out.println("finally");      // 2   
      }
    }

// 輸出:
try
finally
exception
也就是說(shuō),先執(zhí)行try(// 1),然后執(zhí)行finally(// 2),然后執(zhí)行拋出的異常(// 3)

例5:
public static void main(String[] args)
    {
        Test test = new Test();
        try
        {
            test.testTryCatch();
        }
        catch (IOException e)
        {
            System.out.println("exception"); // 4
        }
    }
   
    // 測(cè)試catch中又拋出異常,其執(zhí)行順序
    private void testTryCatch() throws IOException
    {
      try
      {
          System.out.println("try");        // 1
          throw new Exception();
      }
      catch (Exception e)
      {
          System.out.println("catch before throw new exception");    // 2
          throw new IOException();
//          System.out.println("catch after throw IOException"); // 無(wú)法到達(dá)的代碼
      }
      finally
      {
        System.out.println("finally");      // 3
      }
    }

輸出:
try
catch before throw new exception
finally
exception
也就是說(shuō),先執(zhí)行try(//1),再執(zhí)行catch(//2),然后finally(//3),最后外部的catch(//4)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多