如何获取异常源对象

Rob*_*sbé 5 java exception-handling exception

我正在研究Java中的一个assigment,我想知道是否有可能知道哪个对象抛出异常.

我知道如果你创建自定义异常,你可以修改构造函数并引用该对象:

public class MyEx extends Throwable {
    private MyObject object;

    public MyEx(MyObject o){
        super();
    }

    public MyObject getSource(){
        return object;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不知道是否存在另一种捕捉谁抛出异常的方法.你知道其他任何方式吗?

Arj*_*jms 4

如果您只想查看代码的哪一部分引发了异常,则可以使用简单的堆栈跟踪。您可以通过调用printStackTrace()异常实例来获取此信息。

然而,这并没有给你抛出异常的确切对象实例。为此,您必须像您指出的那样实现自定义异常。请注意,在某些上下文中,不存在实例之类的东西,例如从静态方法抛出的异常。

  • 如果您想对堆栈跟踪执行更多操作,也可以使用Exception.getStackTrace()。 (2认同)