本文说明如何查看异常分析,从而了解应用的异常情况。
什么是异常
在ARMS的异常分析功能中,默认情况下,ARMS仅可以采集到被埋点方法抛出的异常,但在用户的实际业务中,可能一次接口调用记录不到异常或者记录一个或多个异常。
例如,假设ARMS探针当前对public void methodA 和public void methodB两个方法进行了埋点,且两个方法互相有调用关系,则在下述场景下,ARMS记录的异常会有所差异。
场景1:methodA、methodB 各自捕获异常并打印。
这种场景下,ARMS监控不到任何异常。
public int methodA() { try { return methodB(); } catch (Throwable e) { e.printStackTrace(); return 0; } } public int methodB() { try { return 1 / 0; } catch (Throwable e) { e.printStackTrace(); return 0; } }
场景2:methodA捕获异常并打印,methodB抛出异常。
这种场景下,ARMS可以监控到一个
java.lang.ArithmeticException
。public int methodA() { try { return methodB(); } catch (Throwable e) { e.printStackTrace(); return 0; } } public int methodB() { return 1 / 0; }
场景3:methodA、methodB各自抛出异常。
这种场景下,ARMS可以监控到两个
java.lang.ArithmeticException
。public int methodA() { return methodB(); } public int methodB() { return 1 / 0; }
场景4:methodA封装并抛出异常、methodB抛出异常。
这种场景下,ARMS可以监控到一个
java.lang.ArithmeticException
和一个java.lang.RuntimeException
。public static int methodA() { try { return methodB(); } catch (Throwable e) { throw new RuntimeException(e); } } public static int methodB() { return 1 / 0; }
前提条件
功能入口
登录ARMS控制台,在左侧导航栏选择 。
在应用列表页面顶部选择目标地域,然后单击目标应用名称。
说明语言列的图标含义如下:
:接入应用监控的Java应用。
:接入应用监控的Golang应用。
:接入应用监控的Python应用。
-:接入可观测链路 OpenTelemetry 版的应用。
在左侧导航栏单击应用详情。
在应用详情页面,选择应用实例,设置时间段,单击异常分析页签。
异常统计
异常统计区域显示该应用在指定时间段的异常的堆积柱状图和异常列表。
可选:在异常统计区域,您可以执行以下操作:
将光标移到统计图上,查看统计情况。
使用光标选中一段时间,查看指定时间段的统计情况。
单击
图标,查看该指标在某个时间段的统计情况或对比不同日期同一时间段的统计情况。
单击
图标,查看该指标的API详情。
异常列表
异常列表显示该应用在指定时间段的所有异常。
可选:在异常列表的操作列,您可以执行以下操作:
如果要过滤异常,在
的异常过滤文本框设置。单击调用统计查看该异常的堆积柱状图。
单击调用链查询查看该异常接口的调用链详情。
更多信息,请参见调用链查询。
单击详情查看该异常的详细信息。