开发者社区 问答 正文

再代码里面进行了try catch 但是没有输出异常,再不改变代码情况下如何获取异常

image.png ru's如上图,使用了阿里巴巴的zai'xia在线诊断工具arthas 但是ti'g提供deming'lin命令行并不适用,然后又使用 stack java.lang.RuntiemException 获取到了异常堆栈信息, 但是这个命令是不安全的,请问还有其它方法吗???

展开
收起
游客uj5stanvgc3g6 2020-11-18 14:06:28 570 分享
分享
版权
举报
阿里云 AI 助理回答

面对您提到的问题,即在使用Arthas在线诊断工具时发现默认命令行不适用,且通过stack java.lang.RuntimeException命令获取异常堆栈信息存在安全隐患,确实需要寻找更安全且有效的方法来进行问题诊断。根据提供的知识库资料,以下是一些建议的解决方案:

安全获取异常堆栈信息

  1. 使用Arthas的线程耗时分析功能

    • 登录到Arthas诊断页面。
    • 切换到线程耗时分析页签,这里会展示所有线程的状态和堆栈信息。
    • 通过展开具体线程(点击线程左侧的**+**图标),您可以查看线程ID、CPU使用率及状态。
    • 若要深入分析某个线程,可单击该线程右侧的查看实时堆栈操作,这样可以安全地获取到详细的堆栈跟踪,避免直接执行可能不安全的命令。
  2. 利用GetRumExceptionStack API

    • 如果您的应用集成了阿里云RUM(Real User Monitoring),可以通过调用GetRumExceptionStack API来安全地获取异常堆栈信息。
    • 需要提供应用ID(Pid)作为请求参数,如果有具体的异常堆栈信息需求,也可以一并提交。
    • 此方法的优势在于它是一个服务端接口调用,相比直接在JVM上执行命令更为安全可控。

方法执行分析与定位性能瓶颈

  1. 深入方法执行分析
    • 在Arthas诊断页面选择方法执行分析页签。
    • 输入类名关键词搜索目标类,然后选择特定方法进行监控。
    • Arthas能为您提供某次方法执行的详细信息,包括耗时、入参、返回值等,无需直接操作危险命令。
    • 利用其高级过滤条件设置,可以针对特定条件抓取方法执行记录,帮助定位问题根源。

应用状态检查

  1. 对象查看器功能
    • 当怀疑应用配置或状态异常时,使用对象查看器页签。
    • 输入类名查找目标实例,查看其字段的实时取值,有助于排查配置错误或状态不一致问题。

综上所述,通过Arthas提供的图形界面功能如线程耗时分析、方法执行分析以及对象查看器,您可以安全有效地诊断应用问题,而无需依赖潜在不安全的命令行操作。同时,结合阿里云RUM服务的API调用,可以在保障系统安全的前提下获取必要的异常堆栈信息。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: