2011-08-15 23 views
0

我正在使用分佈式應用程序,並在類的主要方法中獲取異常。我怎麼知道哪個java程序調用了它?我嘗試調試分佈式應用程序,但無法弄清楚。如何知道調用的java程序的父類?

+0

堆棧跟蹤呢?你是什​​麼意思,調用程序的父類? –

+0

需要更多細節,這是一個RMI應用程序嗎? –

+0

這不是RMI調用,只是調用一個Java應用程序。 –

回答

2

比方說,Java類A調用Java類B(如「java classB」)。我在B類中得到異常。我如何知道哪個類調用了「java classB」?

您無法知道從ClassB調用了哪個java進程。異常只會從它自己的進程中調用它自己的棧。如果別的東西開始了這個過程,即使它是java本身,也沒有辦法從ClassB中知道這一點。

您最好使用ClassA的有用日誌記錄(包括調試/信息消息和異常堆棧跟蹤)。您必須確保ClassB在失敗時退出(以不爲0的代碼退出),然後ClassA可以在其生成的過程中看到此故障。

+0

謝謝Gweebz - 我花了一些時間在代碼中放置斷點,printf,但無法弄清楚。所以,想要找出這個問題是否可以從B類中找出來。 –

0

嘗試獲取當前堆棧跟蹤並查看誰調用了您的主要方法。

StackTraceElement[] elements = Thread.currentThread().getStackTrace(); 
+0

我得到了堆棧跟蹤,但它沒有顯示父類。假設Java Class A調用Java Class B(如「java classB」)。我在B類中得到異常。我如何知道哪個類調用了「java classB」? –

0

下面是 「異常」 的Javadoc:

http://download.oracle.com/javase/6/docs/api/java/lang/Exception.html

有幾件事情你可以用異常對象做除了通話 「的getMessage()」。例如,你可以「printStackTrace()」(告訴你它是如何被調用的,以及它在哪裏被拋出)。

+0

我得到了堆棧跟蹤,但它沒有顯示父類。假設Java Class A調用Java Class B(如「java classB」)。我在B類中得到異常。我如何知道哪個類調用了「java classB」? –

相關問題