在編碼過程中,我想從Runnables中捕獲一些異常。Catch RuntimeException
我試圖趕上與異常的代碼:
public void fooBar(){
//nullable value
final String foo = null;
try{
new Thread(new Runnable() {
@Override
public void run() {
if(foo == null){
//Only Exception that can be thrown from a Runnable
throw new RuntimeException("F.U.B.A.R.");
}
}
}).start();
}catch(Exception ex){
//In my opinion the way to catch this Exception
System.out.println(ex.getMessage());
}
}
我希望看到作爲輸出是:
F.U.B.A.R.
輸出我得到:在線程 「線程0」 了java.lang.RuntimeException
例外:F.U.B.A.R.
我需要這個的原因是把這個異常放入我自己的,所以我可以正確地使用它。
有誰知道如何獲得預期的輸出而不是我目前的?
對此的需求超出了我,細心闡述*爲什麼*你想要這個嗎?順便說一句,你可以簡單地子類RuntimeException,然後重寫'getMessage()') – meskobalazs
這是一個示例代碼。真正的代碼在JSP項目中。我的目標是不要創建任何可以殺死程序的例外。應該捕獲所有異常/錯誤,並最終在JSP頁面上向用戶顯示。 – creulcat
這不是處理線程間異常的正確方法。在你的情況下,而不是擴展Runnable,你應該使用java.util.concurrent.Callable。 – anfy2002us