在Java中重新抛出异常而不会丢失堆栈跟踪

在C#中,我可以使用throw; 语句在保留堆栈跟踪的同时重新抛出异常:

try
{
   ...
}
catch (Exception e)
{
   if (e is FooException)
     throw;
}

在Java中是否有这样的东西( 不会丢失原始堆栈跟踪 )?


catch (WhateverException e) {
    throw e;
}

将简单地重新抛出您捕获的异常(显然周围的方法必须通过其签名等来允许)。 异常将保持原始堆栈跟踪。


我会比较喜欢:

try
{
   ...
}
catch (FooException fe){
   throw fe;
}
catch (Exception e)
{
   ...
}

您也可以将异常封装在另一个异常中,并通过将异常作为Throwable作为原因参数传递来保留原始堆栈跟踪:

try
{
   ...
}
catch (Exception e)
{
     throw new YourOwnException(e);
}
链接地址: http://www.djcxy.com/p/14463.html

上一篇: Rethrowing exceptions in Java without losing the stack trace

下一篇: How can I get a JavaScript stack trace when I throw an exception?