btrace已经实现了这个功https://github.com/btraceio/btrace/issues/327
增加了一个要求:在异常方法的拦截脚本中必须包含@Targetinstance Throwable 的参数。我之前提交的实现不需要这个参数,但是代码不简介。最初是线上需要就临时改了一下,然后抽空进行了一下整理提了个pull request,将脚本中是否包含原方法参数和是否包含异常参数分开处理,有参数就打印参数:
然后作者给提了个修改建议,让加一个@Targetinstance,然后不对是否包含参数做区分,不过我一直没理解,而且中间春节一直放着没动,拖了好久(ૢ˃ꌂ˂ૢ),作者忍不住就自己改了,大体思路没变,就是在脚本中一定要有 @Targetinstance Throwable err这个参数,限制了必须有@Targetinstance之后就不用在分开判断了,直接一起处理就好了,这样代码简洁了很多:
下面是脚本的写法:
上面脚本中String a, long b, String[] c, int[] d就是方法的参数。
公众号:
领取专属 10元无门槛券
私享最新 技术干货