詳解Java異常處置中finally子句的應用。本站提示廣大學習愛好者:(詳解Java異常處置中finally子句的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解Java異常處置中finally子句的應用正文
當異常被拋出,平日辦法的履行將作一個峻峭的非線性的轉向。依附於辦法是如何編碼的,異常乃至可以招致辦法過早前往。這在一些辦法中是一個成績。例如,假如一個辦法翻開一個文件項並封閉,然撤退退卻出,你不願望封閉文件的代碼被異常處置機制旁路。finally症結字為處置這類不測而設計。
finally創立一個代碼塊。該代碼塊在一個try/catch 塊完成以後另外一個try/catch湧現之前履行。finally塊不管有無異常拋出都邑履行。假如異常被拋出,finally乃至是在沒有與該異常相婚配的catch子句情形下也將履行。一個辦法將從一個try/catch塊前往到挪用法式的任什麼時候候,經由一個未捕捉的異常或許是一個明白的前往語句,finally子句在辦法前往之前仍將履行。這在封閉文件句柄和釋聽任安在辦法開端時被分派的其他資本是很有效的。finally子句是可選項,可以有也能夠無。但是每個try語句至多須要一個catch或finally子句。
上面的例子顯示了3種分歧的加入辦法。每個都履行了finally子句:
// Demonstrate finally.
class FinallyDemo {
// Through an exception out of the method.
static void procA() {
try {
System.out.println("inside procA");
throw new RuntimeException("demo");
} finally {
System.out.println("procA's finally");
}
}
// Return from within a try block.
static void procB() {
try {
System.out.println("inside procB");
return;
} finally {
System.out.println("procB's finally");
}
}
// Execute a try block normally.
static void procC() {
try {
System.out.println("inside procC");
} finally {
System.out.println("procC's finally");
}
}
public static void main(String args[]) {
try {
procA();
} catch (Exception e) {
System.out.println("Exception caught");
}
procB();
procC();
}
}
該例中,procA( )過早地經由過程拋出一個異常中止了try。Finally子句在加入時履行。procB( )的try語句經由過程一個return語句加入。在procB( )前往之前finally子句履行。在procC()中,try語句正常履行,沒有毛病。但是,finally塊仍將履行。
留意:假如finally塊與一個try結合應用,finally塊將在try停止之前履行。
上面是上述法式發生的輸入:
inside procA procA's finally Exception caught inside procB procB's finally inside procC procC's finally