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

如何重写外部库的方法?

苍意智
2023-03-14

我想抑制特定异常的堆栈跟踪:org。每件事。json。模式。验证异常。

这个特殊的异常在我们的应用程序中引发了很多,我想限制性能的影响。

我试着用我自己的扩展:

public class SuppressValidationException extends ValidationException {

  public SuppressEveritValidationException(Schema violatedSchema,
      Class<?> expectedType, Object actualValue) {
    super(violatedSchema, expectedType, actualValue);
  }

  public SuppressEveritValidationException(Schema violatedSchema, Class<?> expectedType,
      Object actualValue, String keyword) {
    super(violatedSchema, expectedType, actualValue, keyword);
  }

  @Override
  public Throwable fillInStackTrace() {
    return this;
  }
}

但是当我抓住了抑制验证时,验证异常就消失了。有没有办法实现我想做的?

共有1个答案

李云
2023-03-14

您可以围绕实际引发此异常的外部库的类编写一个简单的包装器,只需将任何方法调用传递给具有相同名称的类,并在适当的情况下捕获异常,然后重新生成一个更简单的版本。

此外,您是否真正记录stacktrace也将取决于您的日志框架,并且它可能也可以配置为不这样做。

 类似资料:
  • 我正在为以下问题寻找一个切实可行的解决方案: 外部库提供组件作为基类。 通过扩展这些基类生成自定义组件。 当实现引发未处理的异常时,基类将中断。 基类源代码不可用。只有二进制jar。 有人知道如何用AspectJ做这个吗?

  • 有什么建议吗?它不工作在模拟器或当我在我的手机上运行它。

  • 问题内容: 通用方法: 所需的覆盖方法: 实现此目的的Java语法是什么? 问题答案: 更好的设计是。

  • 问题内容: 问题 我正在通过ExecutorService运行某些外部方法的多次调用。我希望能够中断这些方法,但是不幸的是,它们不能自行检查中断标志。有什么办法可以强制从这些方法引发异常? 我知道从任意位置抛出异常是潜在的危险,在我的具体情况下,我愿意抓住这次机会并准备处理后果。 细节 “外部方法”是指某些来自外部库的方法,并且我无法修改其代码(可以,但是,每当发布新版本时,这都会成为维护的噩梦)

  • 如何编写一个toString()方法,为三名员工打印名称和computePay,小数点后两位?在我添加StringBuilder之前,该程序正在工作(将名称和周支付打印到命令行)。感谢任何帮助。

  • 我有一个spring-boot应用程序。我有3个属性文件: jar外部的属性文件,位于Configurations/global.properties下的jar位置 jar外部的属性文件,位于Configurations/java.properties下的jar位置 问题是,我运行的是以下命令: 在我的application.properties中,我没有data.storesdb.lakeCon