In C#, posso utilizzare l'istruzione throw;
per rigenerare un'eccezione, mantenendo la traccia dello stack:rethrowing eccezioni in Java senza perdere lo stack trace
try
{
...
}
catch (Exception e)
{
if (e is FooException)
throw;
}
C'è qualcosa di simile in Java (che doesn' t perdere la traccia dello stack originale)?
Perché pensi che perde lo stacktrace originale? L'unico modo per perderlo quando si lancia la nuova SomeOtherException e si dimentica di assegnare la causa root nel costruttore o in initCause(). – akarnokd
Credo che questo sia il modo in cui il codice si comporta in .Net, ma non sono più positivo. Potrebbe valere la pena di cercarlo da qualche parte o eseguire un piccolo test. – ripper234
I 'Throwable's non vengono modificati gettandoli. Per aggiornare la traccia dello stack devi chiamare 'fillInStackTrace()'. Convenientemente questo metodo viene chiamato nel costruttore di un 'Throwable'. – Robert