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

Java测微计@Counted-exception=“none”和@ExceptionHandler的result=“success”?

孟胤
2023-03-14

关于带有@Counted和@ExceptionHandler的Java测微计的快速问题。

我有一个非常简单的@ExceptionHandler:

    @ExceptionHandler
    @Counted(value = "MY_EXCEPTION", description = "SOME_DESCRIPTION")
    public Mono<ResponseEntity<String>> myCoolExceptionHandler(final RuntimeException runtimeException) {
        System.err.println("an exception!" + runtimeException);
        return Mono.just("bad");
    }

我认为这种组合非常有趣,因为它提供了异常发生的可见性。我们可以建立仪表板,警报等,相当酷。

不幸的是,当我查看生成的指标时,它类似于:

# HELP MY_EXCEPTION_total SOME_DESCRIPTION
# TYPE MY_EXCEPTION_total counter
MY_EXCEPTION_total{class="package.MyController",exception="none",method="myCoolExceptionHandler",result="success",} 3.0

我对例外="没有"和结果="成功"感到很困惑

我可以问一下,这些值是如何首先进入度量的吗?

此外,如何将它们更改为更有意义的东西,例如异常类?

非常感谢。

共有1个答案

端木志诚
2023-03-14

带注释的方法本身不会引发异常,并且总是正常完成。因此,由注释安装的拦截代码永远不会记录异常(exception=none),并且结果总是好的(result=success)。只有从带注释的方法中抛出的异常才会记录为错误结果。

您总是可以通过注入Metric注册表,然后用适当的名称和标记注册指标来手动记录指标。

 类似资料:
  • 我是测微计新手。有人能告诉我如何在spring boot中集中管理微服务指标吗? 在哪里可以获得influxdb中所有注册的服务信息、矩阵和存储的度量?

  • 我试图使用测微计向AWS cloudwatch发送度量,但我面临着AWS凭据的问题。 AmazonHttpClient正在尝试使用EC2ContainerCredentialsProviderWrapper或ProfileCredentialsProvider检索凭据,但在lambda环境中,凭据可以通过执行角色获得,而且我们还有特定的环境变量,称为AWS\u ACCESS\u KEY\u ID和

  • Error(错误)和 Exception(异常)都是 java.lang.Throwable 类的子类,在 Java 代码中只有继承了 Throwable 类的实例才能被 throw 或者 catch。 Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类,Exception 是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,进行相应的处理。Error

  • 我想将Micrometer的默认执行器度量(JVM内存等)发送到AWS ElasticSearch实例,并在Kibana中可视化数据。 我想我的设置是正确的,但我没有得到数据在吉巴纳。 以下是我的配置: URL在应用程序中是硬编码的,我只是在这里删除了它。我使用的url来自ES域的AWS仪表板,其中列出: 但是使用这个配置,我还没有能够得到任何数据显示在Kibana。 其他注意事项:我知道Micr

  • 前面关于 panic 例子,提供给我们的是一个无用的错误消息。为了避免这样,我们需要更具体地指定返回类型。在那个例子中,该常规元素为 i32 类型。 为了确定 Err 的类型,我们可以借助 parse(),它使用 FromStr trait 来针对 i32 实现。结果是,Err 类型被指定为 ParseIntError。 在下面例子中要注意,使用简单的 match 语句会导致更加繁琐的代码。事实证

  • 本文向大家介绍error和exception的区别?相关面试题,主要包含被问及error和exception的区别?时的应答技巧和注意事项,需要的朋友参考一下 Error类和Exception类的父类都是Throwable类,他们的区别如下: Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和预防