5 回答

TA貢獻36條經驗 獲得超15個贊
樓主你說的這句話“當try.......catch ?語句補捉到Myexception異常后 ?應該會終止運行才對??!”
這里你有一個理解錯誤:如果發生異常你不捕獲, 程序才會卡在發生異常的地方,這里你捕獲了,程序當然可以繼續跑下去啊,否則捕獲異常是為了什么呢?
出紅字是因為e.printTrace(); 如果你把這行刪掉或者換成System.out.println(e.getMessage()); 就沒有紅字異常了
關于finally: 如果你在try里加一句 int i = 1/0; 他就不會輸出 操作結束了,程序會卡在這行代碼上因為你并沒有捕獲除0異常,這個時候如果你加了finally在里邊輸出“操作結束”,重新跑程序可以輸出“操作結束”了但是還是會有報錯信息,因為 finally代碼塊你可以理解為:無論如何都要做里邊的事

TA貢獻1017條經驗 獲得超1032個贊
try{ ????.... ????int?a=2/0;//發生異常 ????....//得不到執行,跳出到catch塊 }catch(Exception?e)//匹配異常 { ????//執行異常處理。 }finally { //不管是否發生異常,finally塊都會得到執行。 } ...//繼續執行以下代碼

TA貢獻3593條經驗 獲得超0個贊

TA貢獻19條經驗 獲得超6個贊
樓主你說的這句話“當try.......catch ?語句補捉到Myexception異常后 ?應該會終止運行才對??!”
這里你有一個理解錯誤:如果發生異常你不捕獲, 程序才會卡在發生異常的地方,這里你捕獲了,程序當然可以繼續跑下去啊,否則捕獲異常是為了什么呢?
出紅字是因為e.printTrace(); 如果你把這行刪掉或者換成System.out.println(e.getMessage()); 就沒有紅字異常了
關于finally: 如果你在try里加一句 int i = 1/0; 他就不會輸出 操作結束了,程序會卡在這行代碼上因為你并沒有捕獲除0異常,這個時候如果你加了finally在里邊輸出“操作結束”,重新跑程序可以輸出“操作結束”了但是還是會有報錯信息,因為 finally代碼塊你可以理解為:無論如何都要做里邊的事
try{
????....
????int?a=2/0;//發生異常
????....//得不到執行,跳出到catch塊
}catch(Exception?e)//匹配異常
{
????//執行異常處理。
}finally
{
//不管是否發生異常,finally塊都會得到執行。
}
...//繼續執行以下代碼
添加回答
舉報