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

Java:我可以在运行时将运行时异常注入到任意类方法中吗?

聂永怡
2023-03-14

出于测试的目的,有时我想看看我的代码是如何处理从代码的各个部分引发的意外运行时异常的。

public int getSum(int x, int y)
{
   return x + y;
}

有没有一种方法可以让我在调用这个方法时引发一个异常而不是返回一个有效的结果来导致它失败?我知道我可以添加显式代码来实现这一点,但我想知道是否可以用一个在运行时抛出异常的新方法替换任何类中的方法,或类似的方法;-)类似于Mockito如何执行以下操作:

doThrow(new Exception()).when(mockedObject).methodReturningVoid(...);

我希望任何解决方案都不需要任何额外的工具--只需要标准的JVM。谢谢!

共有1个答案

潘琨
2023-03-14

出于简单的目的,您可以尝试使用调用处理程序:包装类方法调用,并在需要时抛出异常。

对于更复杂的操作,您可以使用Java Instrumentation API。

 类似资料:
  • 问题内容: 有什么方法可以在运行时将新的方法和属性注入到类中。 http://nurkiewicz.blogspot.com/2009/09/injecting-methods-at-runtime-to- java.html 指出我们可以使用Groovy做到这一点。 仅使用Java就能做到吗? 问题答案: 仅使用Java就能做到吗? 简单的答案是强调“您不想这样做!”。 从技术上讲,这是可能的,

  • 问题内容: 我试图在Linux命令提示符下运行JUnit,其中包含必要的JARS(hamcrest- core-1.3.jar和junit.jar)和类文件,并且正在使用以下命令来运行JUnit: TestJunit类: TestRunner: 我在运行此时遇到以下异常 问题答案: 如果您使用 JUnit 4.4核心运行 程序执行一个no的类,则将得到此异常。 请查阅链接以获取更多信息。 由vip

  • 我试图学习Java FX,所以我使用了一些Oracle Eample代码,但当我试图在Netbean IDE中运行它时,它给了我一个运行时错误。下面是一段代码: 而这是个例外。 Edit:好的,基于rob的回答,我添加了我在示例中遗漏的扩展,现在在我尝试扩展代码后,它甚至给出了更多的异常。下面是该异常的新代码和日志。 这是异常日志:

  • 问题内容: 我正在开发应用程序(用C ++编写),该应用程序在运行时会生成一些机器代码(现在是Linux,x86-64,但我计划在ARM上迁移)。接下来,它将生成的代码存储在内存中,并通过跳转到内存位置来执行它。长期以来,我在分配可执行内存方面遇到问题,但最终我使用以下方法解决了问题: 到目前为止,它是可行的,但是我不确定这是否是执行此类操作的优雅方法。我想知道可执行加载程序是如何做到的? 问题答

  • 问题内容: 运行单元测试时,我遇到了jar hell的问题。 我遇到了上述错误,并通过删除了不必要的jar文件解决了这些错误。 但是我面临以下两个jar的问题,即tomcat-embed-core-8.0.36.jar和hibernate- jpa-2.1-api-1.0.0.Final.jar。这两者之间有一个共同的类,我需要两个jar文件,任何人都可以向我解释如何解决此问题。我都需要jar文件

  • 我有一个问题与注入Bean到类。 这是我的资源课 这是我的TestRunnable类: 当我尝试连接到endpoint时,会出现以下错误? 我确信问题在于错误地注入了我的ServiceBean。。。