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

何时记录堆栈跟踪以获取捕获的异常

锺离玮
2023-03-14
问题内容

最近,我问是否要报告getMessage()捕获到的异常的文本。出乎意料的是,大多数答案都误解了我的问题,并以为我在问是否要报告堆栈跟踪以获取捕获的异常,这表明这样做是正常的。所以我要问一个后续问题。

catch例外情况下,应该或不应该在什么情况下报告堆栈跟踪?通过“报告”,我包括要求一个日志记录框架为您记录堆栈跟踪

我不问是否报告 的东西 。我在问那个报告是否应该包括堆栈跟踪。


问题答案:

它取决于上下文。例如,当解析来自外部系统的输入时,我可能不会从NumberFormat记录/报告ParseException,但是如果我捕获了ParseException来处理封闭在系统边界内的数据,我肯定会这样做。内部系统状态不一致,而不是输入值验证失败。



 类似资料:
  • 这可能在JUnit文档中已经很明显了,但似乎找不到它,也不记得是否有我将要描述的解决方案。 然后我们得到这个: 现在我得到了一些几乎没用的东西。但是,我希望看到完整的enchilada,整个堆栈跟踪。但是我似乎没有找到使用JUnit这样做的方法,除了在catch/try块中添加测试用例以将堆栈跟踪打印到标准错误(难看): 我讨厌这样做,因为它污染了(IMO)我的测试用例逻辑;而且它是手动的,我必须

  • 在我们的日志文件中,我们发现以下内容: 只有这一行,没有异常堆栈跟踪。 出现此异常的try块正在执行使用javassist创建的动态生成的Java字节码。 我想知道两件事: : null 丢失的堆栈跟踪,尽管在块内使用调用日志挂钩,这通常会导致完整的堆栈跟踪被打印在日志文件中。 我的问题: > 什么样的代码会导致日志输出“java.lang.ArrayIndexOutOfBoundsExcepti

  • 我有两项服务-和<代码>服务1通过SpringREST模板调用一些API。现在

  • 我得到了堆栈跟踪。我所能跟踪的最远的回调是中的调用。没有留下是从调用的信息。 有没有一种方法可以获得完整的堆栈跟踪?

  • 问题内容: 如何获得Java中的当前堆栈跟踪,就像你可以在.NET中那样? 我找到了,但这不是我想要的-我想找回堆栈跟踪信息,而不是打印出来。 问题答案: 你可以使用。 这将返回一个数组,该数组代表程序的当前堆栈跟踪。

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