Когда вы используете 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 для целей регистрации.