在C#中,我可以使用该throw;语句在保留堆栈跟踪的同时重新抛出异常:
try
{
   ...
}
catch (Exception e)
{
   if (e is FooException)
     throw;
}
在Java中有这样的东西(不会丢失原始堆栈跟踪)吗?
我在一些示例BlackBerry Java类中看到了以下一些代码:
try
{
    // stuff that will throw an exception
}
catch(final Exception e)
{
    // deal with it
}
我认为这final是为了表现.根据标题,因为很少(永远?)任何理由来修改Exception已经抛出的东西,它们应该永远存在final吗?
如果是这样,这不是编译器可以完成的事情吗?或者由编译器完成并final手动添加没有任何影响?