当前位置: 首页 > 知识库问答 >
问题:

长Java'try'块中的哪一行抛出了异常?

朱兴运
2023-03-14

是否有一种方法可以找出try块中的哪一行抛出异常?

try {

  //Lots of code. Seriously. Lots.

} catch (Exception e){
  throw new OtherException();
}

问题

  • 堆栈跟踪只在catch块中显示OtherException的行
  • 删除try/catch块并不简单,因为有许多声明为抛出的异常,需要捕获这些异常才能编译代码。

感觉应该有一个简单的方法来做到这一点。

注意:这段代码不是我写的;-)

共有1个答案

慕容灿
2023-03-14

exceptions使用case参数(请参见此处):

try {

  //Lots of code. Seriously. Lots.

} catch (Exception e){
  throw new OtherException(e); // Trick is here
}

这样,在StackTrace中也会得到cause异常。

 类似资料:
  • 问题内容: 在Java中,当实际上没有错误时使用throw / catch作为逻辑的一部分通常是一个坏主意(部分),因为抛出和捕获异常的代价很高,并且在循环中多次执行通常比其他方法慢得多不涉及引发异常的控制结构。 我的问题是,是在throw / catch本身中还是在创建Exception对象时(因为它获得了大量的运行时信息,包括执行堆栈)而产生的成本? 换句话说,如果我这样做 但是不要扔,是扔的

  • 问题内容: 使用以下代码, 我该如何抛出方法()方法一样的方法? 请注意,以上代码仅是示例。我需要在lambda表达式内。 问题答案: 如果您想以安全的方式处理已检查的异常,则需要一个辅助方法,该方法提供了将异常包装为的子类型的便利。这是一个使用Generic的类型安全性的帮助程序函数,以确保仅声明的异常将被重新抛出(除非您使用不安全的操作): 它支持任意方法,该方法将接收将检查的异常类型临时包装

  • 我用Spring Boot和百里香SpringMVC。我有返回百里香模板名称的普通控制器和用< code>@RepsonseBody注释的REST控制器。 假设我有一个< code > EntityNotFoundException ,它是由控制器调用的某个代码抛出的。如果抛出,我想分别为REST控制器返回一个404状态代码和一个错误页面或错误消息。 我当前对普通控制器的设置: 对于REST控制程

  • 我们使用带有Log4j的springaop来登录我们的应用程序。我在应用程序中实现了@Before、@After、@posterhrowing建议。但我面临以下问题: 当任何异常在catch块中被捕获时,它不会调用@afterhrowing通知来打印错误堆栈跟踪。 我想为catch块中捕获的异常打印“错误堆栈跟踪”。意味着无论何时在try块中发生任何异常并被catch捕获,都应该调用一些建议来打印

  • 在许多地方,我得到了几个已检查的异常,如IOException、ParseException、JSoneException等。我必须做出两个选择之一- > 通过在方法签名的末尾添加抛出来抛出相同的异常。 将检查的异常包装在RuntimeException(或一些自定义实现)中,然后抛出它,以便调用者不必在任何地方添加throws子句并检查异常。 在第一种情况下,我将不得不到处抛出,但我的客户可以通

  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因