Как узнать родительский класс вызываемой Java-программы? - PullRequest
0 голосов
/ 15 августа 2011

Я работаю над распределенным приложением и получаю исключение в основном методе класса.Как я узнаю, какая Java-программа вызывала егоЯ попытался отладить распределенное приложение, но не смог понять.

Ответы [ 3 ]

2 голосов
/ 15 августа 2011

Допустим, Java-класс A вызывает Java-класс B (например, «java classB»). Я получаю исключение в классе B. Как я хочу узнать, какой класс вызвал "java classB"?

Вы не можете знать, что вызвало процесс Java из ClassB. Исключение будет идти так же глубоко, как его собственный стек вызовов из своего процесса. Если что-то еще запустило процесс, даже если это был сам java, нет способа узнать это из ClassB.

Вам лучше использовать полезную регистрацию (как отладочных / информационных сообщений, так и трассировки стека исключений) из ClassA. Вам нужно будет убедиться, что ClassB соответствующим образом завершает работу при сбое (выход с кодом, отличным от 0), и тогда ClassA может увидеть этот сбой в процессе, который он породил.

0 голосов
/ 15 августа 2011

Вот Javadoc для "Исключения":

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

Есть несколько вещей, которые вы можете сделать с объектом исключения, кроме вызова "getMessage ()". Например, вы можете «printStackTrace ()» (показывая вам, как он был вызван и куда он был брошен).

0 голосов
/ 15 августа 2011

Попробуйте получить текущую трассировку стека и посмотрите, кто вызывает ваш основной метод.

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