【问题标题】:Byte Buddy Adding Try blocks to existing methodsByte Buddy 将 Try 块添加到现有方法
【发布时间】:2020-01-15 21:50:53
【问题描述】:

使用 Byte Buddy,我尝试在 @Advice.OnMethodExit@Advice.OnMethodEnter 上添加一些内容。我想通过我正在构建的自定义代理添加这样的块。

public String getSomeMethodName() {
        try{

// Default block of code present without instrumentation

        }finally {
// Some Code Snippets added by agent.
        }
    }

基本上该函数甚至没有try 块。如何添加它以及 finally 块。这样做是个好习惯吗?或者实现这一目标的最佳做法是什么?

我正在尝试添加

try{ 

 }catch(){
 }

OnMethod.Enter

希望包含finallyOnMethod.Exit

【问题讨论】:

    标签: java instrumentation byte-buddy javaagents


    【解决方案1】:

    使用@Advice.OnMethodExit(onThrowable = Throwable.class)。即使抛出了任何可抛出的类型,这也会触发通知,finally 块的语义是什么。

    【讨论】:

    • 是否包含tryfinally的块?
    • 基本上我正在尝试包含在OnMethodEnter 上打开的jaeger 跟踪跨度我想在OnMethodExit 中使用finally 关闭它们?
    • 如前所述,finally 块与带有重新抛出指令的 catch(Throwable) 块基本相同。 Byte Buddy 在一个概念中对它们进行建模。
    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    相关资源
    最近更新 更多