【发布时间】:2012-03-12 01:01:42
【问题描述】:
我正在尝试编写一个派生自 Exception 的类 BrokenObjectException 类。 但是在 Eclipse 中我得到了这个错误:
可序列化类 BrokenObjectException 没有声明 long 类型的静态最终 serialVersionUID 字段
public class BrokenObjectException extends Exception
{
BrokenObject(String message)
{
;
}
}
我不明白为什么它要求我声明一个字段。 接口不应该只强制声明一些方法吗? 无论如何,我想要这个类,因为我想以与捕获所有异常的方式不同的方式来捕获它,例如,我有一个块:
try
{
if(...)
throw new Exception("wrong");
if(...)
throw new BrokenObjectException("wrong");
}
catch(BrokenObjectException e)
{
// do something (action1)
throw e;
}
catch(Exception e)
{
// so something (action2)
throw e;
}
所以在第一个 catch 块中,我写了“做某事”。 这是因为根据抛出的异常类型,我想做不同的操作。 因此,由于 BrokenObjectException 是从 Exception 派生的,它应该被捕获两次。 但是如果抛出了 BrokenObjectException,我想做 action1 和 action2,如果只是抛出一个普通的异常,我只想做 action2。这可能吗? 以及如何解决我遇到的错误?
【问题讨论】: