我正在处理分布式应用程序并在类的主方法中获取异常。我怎么知道哪个java程序调用了它?我尝试调试分布式应用程序,但无法弄清楚。
答案 0 :(得分:2)
假设Java Class A调用Java Class B(比如“java classB”)。我在B类中获得异常。我如何知道哪个类调用了“java classB”?
您无法知道从ClassB调用java进程的内容。 Exception只会像它自己的调用栈一样深入。如果其他东西启动了这个过程,即使它是java本身,也无法从ClassB中知道这一点。
最好使用ClassA中的有用日志记录(包括调试/信息消息和异常堆栈跟踪)。您必须确保ClassB在失败时正确退出(使用0以外的代码退出),然后ClassA可以在它生成的过程中看到此失败。
答案 1 :(得分:0)
尝试获取当前的堆栈跟踪,看看谁调用了main方法。
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
答案 2 :(得分:0)
这是“异常”的Javadoc:
http://download.oracle.com/javase/6/docs/api/java/lang/Exception.html
除了调用“getMessage()”之外,您还可以使用异常对象执行多项操作。例如,您可以“printStackTrace()”(显示它是如何被调用的,以及它被抛出的位置)。