我試圖解決的問題,在我的應用我有這樣的代碼exception.getMessage()使用類名稱輸出
try {
object1.method1();
} catch(Exception ex) {
JOptionPane.showMessageDialog(nulll, "Error: "+ex.getMessage());
}
和object1會做這樣的事情:
public void method1() {
//some code...
throw new RuntimeException("Cannot move file");
}
我收到了一封郵件在我的選項窗格是這樣的: Error: java.lang.RuntimeException: Cannot move file
但我用getMessage
而不是toString
方法,因此該類SH名不會出現,對嗎?
我做錯了什麼? 我已經嘗試了很多例外,即使是Exception
本身。我正在尋求解決這個問題,如果沒有必要實施我自己的Exception
子類
問題解決 - 謝謝大家!
try和catch實際上被稱爲的get()從SwingWorker的方法,構建與我異常的ExecutionException
從doInBackground()拋出 我固定這樣做:
@Override
protected void done() {
try {
Object u = (Object) get();
//do whatever u want
} catch(ExecutionException ex) {
JOptionPane.showMessageDialog(null, "Error: "+ex.getCause().getMessage());
} catch(Exception ex) {
JOptionPane.showMessageDialog(null, "Error: "+ex.getMessage());
}
}
聽起來很奇怪 - 你能在很短,但完整的程序重現此? –
你可以在'catch'中添加'e.printStackTrace()'嗎?看起來@dacwe是對的。 –
看着堆棧跟蹤我可以看到問題可能是Swing Worker ....... try {}實際上是從swing worker方法done()調用get(),並拋出異常拋出doInBackGround – fredcrs