国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java異常架構圖和幾個面試題

2019-11-14 15:20:19
字體:
來源:轉載
供稿:網友

1.java異常架構圖

粉紅色的是受檢查的異常(checked exceptions),其必須被 try{}catch語句塊所捕獲,或者在方法簽名里通過throws子句聲明.受檢查的異常必須在編譯時被捕捉處理,命名為 CHecked Exception 是因為Java編譯器要進行檢查,Java虛擬機也要進行檢查,以確保這個規則得到遵守.
綠色的異常是運行時異常(runtime exceptions),需要程序員自己分析代碼決定是否捕獲和處理,比如 空指針,被0除...
而聲明為Error的,則屬于嚴重錯誤,需要根據業務信息進行特殊處理,Error不需要捕捉。

2.try{}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?

也許你的答案是在return之前,但往更細地說,我的答案是在return中間執行,請看下面程序代碼的運行結果:

 1 public  classTest {   2    3     public static void main(String[] args) {   4        System.out.PRintln(newTest().test());   5     }   6     staticint test()   7     {   8        int x = 1;   9        try  10        {  11            return x;  12        }  13        finally  14        {  15            ++x;  16        }  17     }  18 }  

---------執行結果 ---------

運行結果是1,為什么呢?主函數調用子函數并得到結果的過程,好比主函數準備一個空罐子,當子函數要返回結果時,先把結果放在罐子里,然后再將程序邏輯返回到主函數。所謂返回,就是子函數說,我不運行了,你主函數繼續運行吧,這沒什么結果可言,結果是在說這話之前放進罐子里的。

3。final, finally, finalize的區別。

  final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。

內部類要訪問局部變量,局部變量必須定義成final類型,例如,一段代碼……

 

finally是異常處理語句結構的一部分,表示總是執行。

 

finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。JVM不保證此方法總被調用

4.請寫出你最常見到的5個runtime exception。

這道題主要考你的代碼量到底多大,如果你長期寫代碼的,應該經常都看到過一些系統方面的異常,你不一定真要回答出5個具體的系統異常,但你要能夠說出什么是系統異常,以及幾個系統異常就可以了,當然,這些異常完全用其英文名稱來寫是最好的,如果實在寫不出,那就用中文吧,有總比沒有強!

所謂系統異常,就是…..,它們都是RuntimeException的子類,在jdk doc中查RuntimeException類,就可以看到其所有的子類列表,也就是看到了所有的系統異常。我比較有印象的系統異常有:NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException。

5.JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?

Java 通過面向對象的方法進行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在 Java 中,每個異常都是一個對象,它是 Throwable 類或其它子類的實例。當一個方法出現異常后便拋出一個異常對象,該對象中包含有異常信息,調用這個對象的方法可以捕獲到這個異常并進行處理。Java 的異常處理是通過 5 個關鍵詞來實現的:try、catch、throw、throws 和 finally。一

般情況下是用 try 來執行一段程序,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理;

 try 用來指定一塊預防所有“異常”的程序;

 catch 子句緊跟在 try 塊后面,用來指定你想要捕捉的“異常”的類型;

 throw 語句用來明確地拋出一個“異常”;

 throws 用來標明一個成員函數可能拋出的各種“異常”;

 Finally 為確保一段代碼不管發生什么“異常”都被執行一段代碼;

 可以在一個成員函數調用的外面寫一個 try 語句,    在這個成員函數內部寫另一個 try 語句保護其他代碼。每當遇到一個 try 語句,“異常”的框架就放到堆棧上面,直到所有的 try 語句都完成。如果下一級的 try 語句沒有對某種“異常”進行處理,堆棧就會展開,直到遇到有處理這種“異常”的 try 語句。

6.運行時異常與一般異常有何異同?

異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。

7..下面的程序代碼輸出的結果是多少?

public class  smallT{

         public static void  main(String args[]){

                   smallT t  = new smallT();

                   int  b =  t.get();

                   System.out.println(b);

         }

         public int  get()

         {

                   try     {return 1;}

                   finally{return 2;}

         }}

返回的結果是2。

我可以通過下面一個例子程序來幫助我解釋這個答案,從下面例子的運行結果中可以發現,try中的return語句調用的函數先于finally中調用的函數執行,也就是說return語句先執行,finally語句后執行,所以,返回的結果是2。Return并不是讓函數馬上返回,而是return語句執行后,將把返回結果放置進函數棧中,此時函數并不是馬上返回,它要執行finally語句后才真正開始返回。

在講解答案時可以用下面的程序來幫助分析:

public  class Test {

    public static void main(String[]args) {

        System.out.println(new Test().test());;

    }

    int test()

    {

        try         {return func1();}

        finally    {return func2();}

    }

   

    int func1()

    {

        System.out.println("func1");

        return 1;

    }

    int func2()

    {

        System.out.println("func2");

        return 2;

    }  

}

-----------執行結果-----------------

func1

func2

2

結論:finally中的代碼比return 和break語句后執行


上一篇:return的用法

下一篇:springAOP的注解實例

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 砚山县| 奉贤区| 平湖市| 观塘区| 怀仁县| 同心县| 夏邑县| 库车县| 喜德县| 山西省| 扬州市| 汉寿县| 綦江县| 孟村| 前郭尔| 曲沃县| 黔南| 原阳县| 马鞍山市| 慈利县| 台南市| 沙湾县| 肃南| 达孜县| 松阳县| 那曲县| 扎鲁特旗| 南溪县| 临猗县| 鄂托克前旗| 三门峡市| 景泰县| 东至县| 津市市| 会同县| 宝丰县| 江城| 绥化市| 临沧市| 满城县| 莱芜市|