[英]How to override a method of an external library?
我想抑制特定異常的堆棧跟蹤:org.everit.json.schema.ValidationException。
這個特殊的異常在我們的應用程序中被拋出很多,我想限制性能損失。
我嘗試用自己的擴展它:
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;
}
}
但是當我捕獲 SuppressValidation 時,ValidationException 未被捕獲。 有沒有辦法實現我想要做的事情?
您可以圍繞這個實際拋出此異常的外部庫的 class 編寫一個簡單的包裝器,只需將任何方法調用傳遞給具有相同名稱的方法,並在適當的情況下捕獲異常並重新拋出一個更簡單的版本。
此外,您是否實際記錄堆棧跟蹤也將取決於您的日志記錄框架,並且它可能也可以配置為不這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.