配置了业务链路后,ARMS即可展示对应的业务链路数据。您可以在异常分析页面查看对应业务链路下产生的异常详情,优化产生异常的代码。
什么是异常
在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控制台,在左侧导航栏选择 。
在业务链路列表页面顶部选择目标地域,然后单击目标业务链路名称。
在上方导航栏单击异常分析。
在快捷筛选区域,您可以按异常名称、接口名称、实例、应用对异常次数、异常列表进行筛选过滤
在趋势图区域,您可以查看应用在指定时间范围内抛出异常的次数,按照异常做堆叠展示。
单击
图标,可以在弹出的对话框中查看该指标在某个时间段的统计情况或对比不同日期在同一时间段的统计情况,通过选择
图标可以切换柱状图、趋势图进行展示。
在异常列表区域,您可以查看异常接口的名称、对应的应用、异常次数、占比、异常信息摘要等。
在异常列表,您可以执行以下操作:
单击操作列的概览,可在右侧面板中查看该异常的异常数趋势、接口和实例维度的异常分布、异常堆栈等概览信息。
单击操作列的调用链,可以查看该调用的链路详情。更多信息,请参见调用链分析。