我试图解决的问题,在我的应用我有这样的代码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