大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

第一部分 Java基礎
第二部分 Java進階

Java異常處理面試題

1、final、finally、finalize 的區別?

● final:用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,被其修飾的類不可繼承。

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

● finalize:Object 類的一個方法,所以Java對象都有這個方法,當某Java對象沒有更多的引用指向的時候,會被垃圾回收器回收,該對象被回收之前,由垃圾回收器來負責調用此方法,通常在該方法中進行回收前的準備工作。該方法更像是一個對象生命周期的臨終方法,當該方法被系統調用則代表該對象即將“死亡”,但是需要注意的是,我們主動行為上去調用該方法并不會導致該對象“死亡”,這是一個被動的方法(其實就是回調方法),不需要我們調用。

2、Java中異常分為哪些種類?

按照異常需要處理的時機分為編譯時異常(也叫受控異常)也叫 CheckedException 和運行時異常(也叫非受控異常)也叫 UnCheckedException。Java認為Checked異常都是可以被處理的異常,所以Java程序必須顯式處理Checked異常。如果程序沒有處理Checked 異常,該程序在編譯時就會發生錯誤無法編譯。這體現了Java 的設計哲學:沒有完善錯誤處理的代碼根本沒有機會被執行。對Checked異常處理方法有兩種:

● 第一種:當前方法知道如何處理該異常,則用try...catch塊來處理該異常。

● 第二種:當前方法不知道如何處理,則在定義該方法時聲明拋出該異常。

運行時異常只有當代碼在運行時才發行的異常,編譯的時候不需要try…catch。Runtime如除數是0和數組下標越界等,其產生頻繁,處理麻煩,若顯示申明或者捕獲將會對程序的可讀性和運行效率影響很大。所以由系統自動檢測并將它們交給缺省的異常處理程序。當然如果你有處理要求也可以顯示捕獲它們。

3、error和exception的區別?

Error類和Exception類的父類都是Throwable類,他們的區別如下:

● Error類一般是指與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢出等。對于這類錯誤的導致的應用程序中斷,僅靠程序本身無法恢復和預防,遇到這樣的錯誤,建議讓程序終止。

● Exception類表示程序可以處理的異常,可以捕獲且可能恢復。遇到這類異常,應該盡可能處理異常,使程序恢復運行,而不應該隨意終止異常。

●Exception類又分為未檢查異常(UnCheckedException)和受檢查的異常(CheckedException)。運行時異常ArithmeticException,IllegalArgumentException編譯能通過,但是一運行就終止了,程序不會處理運行時異常,出現這類異常,程序會終止。而受檢查的異常,要么用 try…catch 捕獲,要么用throws字句聲明拋出,交給它的父類處理,否則編譯不會通過。

4、調用下面的方法,得到的返回值是什么?

1. public int getNum() {
2.     try {
3.         int a = 1 / 0;
4.         return 1;
5.     } catch (Exception e) {
6.         return 2;
7.     } finally {
8.         return 3;
9.     }
10.}

代碼走到第3行的時候遇到了一個MathException,這時第4行的代碼就不會執行了,代碼直接跳轉到catch語句中,走到第 6 行的時候,異常機制有一個原則:如果在catch中遇到了return或者異常等能使該函數終止的話那么有finally就必須先執行完finally代碼塊里面的代碼然后再返回值。因此代碼又跳到第8行,可惜第8行是一個return語句,那么這個時候方法就結束了,因此第6行的返回結果就無法被真正返回。如果finally僅僅是處理了一個釋放資源的操作,那么該道題最終返回的結果就是2。因此上面返回值是3。

5、Java 異常處理機制的理解?

Java對異常進行了分類,不同類型的異常分別用不同的Java類表示,所有異常的根類為 java.lang.Throwable,Throwable下面又派生了兩個子類:Error和Exception。

Error表示應用程序本身無法克服和恢復的一種嚴重問題。

Exception表示程序還能夠克服和恢復的問題,其中又分為系統異常和普通異常。

系統異常是軟件本身缺陷所導致的問題,也就是軟件開發人員考慮不周所導致的問題,軟件使用者無法克服和恢復這種問題,但在這種問題下還可以讓軟件系統繼續運行或者讓軟件死掉,例如,數組下標越界(ArrayIndexOutOfBoundsException),空指針異常(NullPointerException)、類轉換異常(ClassCastException)。

普通異常是運行環境的變化或異常所導致的問題,是用戶能夠克服的問題,例如,網絡斷線,硬盤空間不夠,發生這樣的異常后,程序不應該死掉。

Java為系統異常和普通異常提供了不同的解決方案,編譯器強制普通異常必須try..catch處理或用throws聲明繼續拋給上層調用方法處理,所以普通異常也稱為checked異常,而系統異常可以處理也可以不處理,所以編譯器不強制用try..catch處理或用throws聲明,所以系統異常也稱為unchecked異常。

6、說出最常見的5個RuntimeException?

● java.lang.NullPointerException 空指針異常;出現原因:調用了未經初始化的對象或者是不存在的對象。

● java.lang.ClassNotFoundException 指定的類找不到;出現原因:類的名稱和路徑加載錯誤;通常都是程序試圖通過字符串來加載某個類時可能引發異常。

● java.lang.NumberFormatException 字符串轉換為數字異常;出現原因:字符型數據中包含非數字型字符。

● java.lang.IndexOutOfBoundsException 數組角標越界異常,常見于操作數組對象時發生。

● java.lang.IllegalArgumentException 方法傳遞參數錯誤。

● java.lang.ClassCastException 數據類型轉換異常。

● java.lang.NoClassDefFoundException 未找到類定義錯誤。

● SQLException SQL 異常,常見于操作數據庫時的 SQL 語句錯誤。

● java.lang.InstantiationException 實例化異常。

● java.lang.NoSuchMethodException 方法不存在異常。

7、throw 和 throws 的區別?

● throw:

throw 語句用在方法體內,表示拋出異常,由方法體內的語句處理。

throw是具體向外拋出異常的動作,所以它拋出的是一個異常實例,執行throw一定是拋出了某種異常。

● throws:

throws語句是用在方法聲明后面,表示如果拋出異常,由該方法的調用者來進行異常的處理。

throws主要是聲明這個方法會拋出某種類型的異常,讓它的使用者要知道需要捕獲的異常的類型。

● throws表示出現異常的一種可能性,并不一定會發生這種異常。

全部教程
主站蜘蛛池模板: 欧美日韩一级大片 | 免费h片网站 | 99re这里只有精品99 | 精品91在线 | 国产一级在线免费观看 | 一级aa 毛片高清免费看 | 精品无人区乱码一区二区 | 美女在线视频观看影院免费天天看 | 国内精品久久久久久久亚洲 | 欧美性猛交xxxxxxxx软件 | 欧美一级艳片爽快片 | 国产黄色91 | 国产视频国产 | 免费一级特黄欧美大片勹久久网 | 中文字幕在线看日本大片 | 欧美性视频一区二区三区 | 亚洲一区二区三区在线视频 | 国产91久久最新观看地址 | 亚洲黄色成人 | 色插视频| 国产福利免费看 | 欧洲在线免费视频 | 国产一级影视 | 亚洲黄a| 国产亚洲欧美日韩在线看片 | 最新国产在线 | 欧美性猛交xxxxxxxx软件 | 中文字幕日韩一区二区 | 亚洲综合图区 | 国产精品品福利视频 | 日韩在线手机看片免费看 | 国产亚洲美女精品久久久久狼 | 天堂网一区二区 | 亚洲精品二三区伊人久久 | 免费国产一级 | 性xxx欧美 | 免费一级毛片 | 中国大乳久久 | 日本www在线视频 | 四虎在线免费视频 | 婷婷色九月 |