class veryimportantexception extends exception
}class hohumexception extends exception
}public class lostmessage
void dispose() throws hohumexception
public static void main(string args) finally
} catch(exception e)
}} /* 輸出結果:
a trivial exception
*/
從輸出結果可以發現,veryimportantexception丟失了,它被finally子句中的hohumexception所取代。這個相當嚴重的缺陷,因為異常可能會以一種比這個例子更微妙和難以察覺的方式完全丟失,從而導致一些怪bug現象。
還有一種更簡單的丟失異常的方式就是直接從finally子句中返回:
public class exceptionsilencer finally
}}
異常捕捉陷阱
finally執行規則 eg1 tryfinally 不論try塊正常結束或者非正常結束,finally的確會執行 但是上述例子不會輸出finally塊內容,因為system.exit 0 根本沒有結束執行過程,system.exit 0 將停止當前執行緒和其他當場死亡的執行緒,finally不能使...
中斷,異常,陷阱 概念
中斷 為了裝置與cpu之間的非同步通訊。是由裝置向cpu發的訊號。典型的有如服務請求,任務完成提醒等。比如我們熟知的時鐘中斷,硬碟讀寫服務請求中斷。中斷的發生與系統處在使用者態還是在核心態無關,只決定於eflags暫存器的乙個標誌位 中斷允許位 我們熟悉的sti,cli兩條指令就是用來設定這個標誌位...
異常捕獲的陷阱
system.exit 0 停止當前執行緒,和所有其他當場死亡的執行緒,finally塊不能讓已經死亡的執行緒執行。只有當finally塊執行完成後,才返回到return語句中執行。try時,無論什麼原因跳出,都會找finally塊中的來執行 不能用異常來代替流程控制語句。runtimeexcept...