我可以在JVM选项中控制异常吗?

时间:2018-12-17 01:52:13

标签: java jvm jvm-arguments

我无法以任何方式直接修改Java代码。 但是,我有一个例外,我想对其应用try-catch。 使用jvm选项可以做到这一点吗?

3 个答案:

答案 0 :(得分:1)

简短的答案是:否。

如果要捕获异常,则需要修改代码来实现。

如果该选项不可用,请与向您提供产品/向您出售产品的人员联系,并与他们讨论可能的解决方法:

  • 您使用的产品可能不正确。
  • 他们可能会承认这是一个错误,并为您提供修复程序。

如果这行不通,并且您真的很绝望,则可能可以对代码进行反向工程并对其进行修改以处理异常。但是,这种方法存在各种风险。但是请记住,您正在 修改代码。


我可以想到一些原因,为什么这样的选项不存在/尚未实现。

  • 这样的修改(为不必要的异常注入catch)会更改应用程序的行为。这是不安全的/危险的,要使其降低危险性可能很困难。

  • 技术上正确的解决方案很可能是更改程序或您的使用方式。

  • 如果Oracle实施了此功能,则将对他们造成潜在的业务风险。

答案 1 :(得分:0)

尽管斯蒂芬C的答案是应该走的第一条路,但您可以随时修改代码(除非法律禁止这样做)

您可以

  • 反编译该类,对其进行编辑,然后再次进行编译。
  • 使用Instrumentation即时修改类。

这些解决方案都不是简单的,一种更好的方法是首先解决Exception的原因。

答案 2 :(得分:0)

对于您的确切问题,我还是不太清楚,因此我的建议可能不适用于您的情况,但是您可以设置一个uncaught exception handler吗?

来自Javadocs:

  

设置当线程由于未捕获的异常而突然终止并且没有为该线程定义其他处理程序时调用的默认处理程序。