当前位置: 首页 > 面试题库 >

在不丢失堆栈跟踪的情况下重新抛出Java中的异常

陈哲
2023-03-14
问题内容

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

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

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


问题答案:
catch (WhateverException e) {
    throw e;
}

只会简单地抛出您捕获的异常(显然,周围的方法必须通过其签名等方式允许此异常)。该异常将保留原始堆栈跟踪。



 类似资料:
  • 问题内容: 我今天在浏览一些日志时遇到一个奇怪的错误。 它在日志中的显示方式如下: 代码如下所示: 如果重要的话,代码位于jsp中。再次在日志中重复相同的异常(正如您期望的那样)。 我没有任何原因的记录-日志中的上一行显示了查询的执行。在4天的时间内仅发生了两次,似乎并未对系统造成任何损害。 环境:在Java 5的Tomcat下运行的非常繁忙的Web服务。 我并没有要求调试系统的提示-这些错误已久

  • Edit2 @Paradematic在建议重定向而不是抛出异常方面做得很好;这解决了日志记录问题。Play 2中的问题是,重定向需要发生在所谓的范围内,而日期解析器调用并不总是这样。 最初的 有一个问题,即我的application.log被与uri日期解析器操作相关的错误填满,如果给定有效的uri日期,该操作应该成功。 然而,一些用户试图通过输入无效日期来规避这一点,希望获得免费访问付费订阅者专

  • 问题内容: 这可能是一个非常幼稚的问题。 我曾经相信Java 中的a 总是 包含堆栈跟踪。这是正确的吗? 现在看起来我捕获了 没有 堆栈跟踪的异常。是否有意义?是否 可以 在没有堆栈跟踪的情况下捕获异常? 问题答案: 无需堆栈跟踪就可以捕获Java中的Throwable对象: 构造一个具有指定详细消息,原因,启用或禁用原因,启用或禁用 可写堆栈跟踪 的新throwable 。 填写执行堆栈跟踪。此

  • 现在看来,我在没有堆栈跟踪的情况下捕获异常。有道理吗?是否有可能在没有堆栈跟踪的情况下捕获异常?

  • 问题内容: 是否有一种特殊的机制来强制scrapy打印出所有python异常/堆栈跟踪。 我犯了一个简单的错误,即弄错了一个列表属性,导致AttributeError出现,该错误未在日志中完整显示: 因此它显示的AttributeError计数为1,但是没有告诉我在哪里以及如何进行操作,我不得不手动在代码中放置ipdb.set_trace()来找出哪里出错了。Scrapy本身继续执行其他线程而不打

  • 问题内容: 如何将异常的堆栈跟踪信息打印到stderr以外的流上?我发现的一种方法是使用getStackTrace()并将整个列表打印到流中。 问题答案: 可以接受or或参数: 也就是说,请考虑将SLF4J之类的记录器接口与LOGBack或log4j之类的记录实现一起使用。