抛出异常时将对象传递给构造函数是个好主意吗?
假设服务包中某处有下一个代码。
throw new MyException(object);
MyException 类:
Object object;
public MyException(Object object) {
super();
this.object = object;
}
public Object getObject() {
return object;
}
然后,比方说,在 GUI 中我们必须处理服务中抛出的异常。我们只是捕获了一个异常并想要访问构造函数中传递的对象。这行得通。但从风格的角度来看是正确的吗?
使用 getObject() 是正确的方法吗?
最佳答案
我会说这取决于您使用 getObject
做什么。如果您只是使用它来报告错误或管理从异常中恢复,那么这没有任何问题。我会传递比对象更具体的东西。例如,我可能会提供有关错误原因的异常信息,并捕获可能有助于解决错误的任何有用信息。
另一方面,如果您正在使用此对象来继续控制流的某些正常分支,那么这将不会被视为异常的正常使用!重复一遍,异常(exception)是针对特殊情况的,仅此而已。如果您要用它们做其他事情,那通常不是个好主意。
如果您使用异常来捕获稍后要处理的结果,那么这就是糟糕的设计味道。查看重构您的代码以将这些对象写出到存储中以供以后处理或类似的处理。不要滥用异常。
关于Java:抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10548146/