假設我有一個try
- finally
塊沒有catch塊,我們在try
塊內拋出一個異常。我能抓住那個例外嗎?我們可以捕捉一個沒有catch塊的異常嗎?
public static void main(String[] args) throws IOException{
try {
throw new IOException("Something went wrong");
} finally{
}
}
假設我有一個try
- finally
塊沒有catch塊,我們在try
塊內拋出一個異常。我能抓住那個例外嗎?我們可以捕捉一個沒有catch塊的異常嗎?
public static void main(String[] args) throws IOException{
try {
throw new IOException("Something went wrong");
} finally{
}
}
是的,這是可能的。
您可以使用未捕獲的異常處理程序。它的責任是捕捉你的程序沒有捕捉到的異常,並用它做一些事情。
public static void main(String[] args) throws IOException {
Thread.setDefaultUncaughtExceptionHandler((thread, thr) -> thr.printStackTrace());
throw new IOException("Something went wrong");
}
setDefaultUncaughtExceptionHandler
是將註冊時的例外在任何線程中被拋出,並沒有抓到會被調用處理程序的方法。上面的代碼將打印throwable句柄的堆棧跟蹤。
處理程序將異常發生的線程和拋出的throwable作爲參數。
您還可以通過在Thread
實例上使用setUncaughtExceptionHandler
,爲每個線程設置處理程序。該處理程序將處理從此線程拋出的所有未捕獲的異常。
從來沒有聽說過它,但它的作品。 – SHE
您在那裏的代碼不會編譯。但是,您可以通過添加「catch」塊來捕獲異常。 – Dando18
如果你想捕獲一個異常,那麼使用catch類。 –
這個問題沒有任何意義:) –