在Java中,拋出異常之后,如果不對異常進(jìn)行處理,代碼會一直往調(diào)用的上層拋,直到線程的執(zhí)行器,如果在這里異常仍然未得到處理,線程將停止執(zhí)行。所以拋出異常后如果不對異常進(jìn)行處理,后面的代碼將不會執(zhí)行。
創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元安塞做網(wǎng)站,已為上家服務(wù),為安塞各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220
比如以下代碼:
public void testException throws Exception(){
System.out.println("start");
throw new Exception("test exception");
System.out.println("execute ended?");
}
最后一行代碼在異常拋出之后,這行代碼是不會執(zhí)行的。
1.
public class TestShutDownHook {
2.
public TestShutDownHook() {
3.
doShutDownWork();
4.
}
5.
private void doShutDownWork() {
6.
Runtime run=Runtime.getRuntime();//當(dāng)前 Java 應(yīng)用程序相關(guān)的運行時對象。
7.
run.addShutdownHook(new Thread(){ //注冊新的虛擬機來關(guān)閉鉤子
8.
@Override
9.
public void run() {
10.
//程序結(jié)束時進(jìn)行的操作
11.
System.out.println("程序結(jié)束調(diào)用");
12.
}
13.
});
14.
}
15.
public static void main(String[] args) {
16.
new TestShutDownHook();
17.
for (int i = 0; i 1000; i++) { // 在這里增添您需要處理代碼 }
18.
System.out.println(i);
19.
}
20.
}
21.
}
眾所周知,在Java中,如果想跳出for循環(huán),一般情況下有兩種方法:break和continue。
break是跳出當(dāng)前for循環(huán),如下面代碼所示:
public?class?RecTest?{?
/**
*?@param?args
*/?
public?static?void?main(String[]?args)?{?
for(int?i=0;?i?10;?i++){?
if(i==5){?
break;?
}?
System.out.print(i+"?");?
}?
}?
}
輸出:0 1 2 3 4
也就是說,break會跳出(終止)當(dāng)前循環(huán)。continue是跳出當(dāng)前循環(huán),開始下一循環(huán),如下所示:
public?class?RecTest?{??
/**
*?@param?args
*/?
public?static?void?main(String[]?args)?{?
for?(int?i?=?0;?i??10;?i++)?{?
if?(i?==?5)?{?
continue;?
}?
System.out.print(i+"?");?
}?
}?
}
輸出:0 1 2 3 4 6 7 8 9
以上兩種方法沒有辦法跳出多層循環(huán),如果需要從多層循環(huán)跳出,則需要使用標(biāo)簽,定義一個標(biāo)簽label,
然后在需要跳出的地方,用break
label就行了,代碼如下:
public?class?RecTest?{??
/**
*?@param?args
*/?
public?static?void?main(String[]?args)?{?
loop:?for?(int?i?=?0;?i??10;?i++)?{?
for?(int?j?=?0;?j??10;?j++)?{?
for?(int?k?=?0;?k??10;?k++)?{?
for?(int?h?=?0;?h??10;?h++)?{?
if?(h?==?6)?{?
break?loop;?
}?
System.out.print(h);?
}?
}?
}?
}?
System.out.println("\nI'm?here!");?
}?
}
輸出:
012345
I'm here!