Создание трассировки стека в Java

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

ERROR Client received error when doing stuff:
myapp.FooBarException: bla
 at server.myMethod()
 at rmi.callHandler() // and now, on the next line comes the client
 at rmi.sendCall();
 at client.doServerMethod()
 at Thread.run()

Как выполняется такая «подделка» трассировки стека ?


Зачем мне это (кроме интереса)? Что ж, это помогло бы мне, если бы я мог сделать это:

outer() {

  thread = new Thread(...
      inner();
      // inner() throws
      // RuntimeException
      //  at inner();
      //  at Runnable.run();
      //  at Thread.run();
      //  at outer();
      //  at lalalala();
      //  ...

  ).start();

  thread.join();

}

И сделать так, чтобы исключение, созданное в inner () , имело бы outer () (и методы ниже цепочку) также в stacktrace для целей регистрации.

7
задан bacar 17 August 2012 в 18:26
поделиться