递归火山软件开发平台
标题:
异常堆栈输出
[打印本页]
作者:
howill2021
时间:
3 天前
标题:
异常堆栈输出
本帖最后由 howill2021 于 2025-7-24 23:48 编辑
(, 下载次数: 3)
上传
点击文件名下载附件
今天遇到了一个数组异常,调试时候很正常,编译后安装其他设备偶尔异常,只能看到是数组报错,具体哪一行代码引用的数组就看不到,这一顿折腾也没找到,AI生成了一段可以获取堆栈,以便查找错误
<火山程序 类型 = "通常" 版本 = 1 />
方法 取本地异常文本3 <公开 静态 类型 = 文本型 注释 = "将本异常的错误信息获取到"错误信息"参数中去." 注释 = "如果没有本地语言翻译信息,所返回错误信息与"取异常文本2"相同."
折叠 折叠2 @禁止流程检查 = 真>
参数 欲操作本对象 <类型 = 可俘获异常类>
{
@ Throwable e = @<欲操作本对象>;
@ StringBuilder buffer = new StringBuilder();
@ buffer.setLength(0);
// 获取主异常信息,处理可能为null的情况
@ String mainMessage = e.getLocalizedMessage();
@ if (mainMessage == null) {
@ mainMessage = e.getMessage();
@ }
@ if (mainMessage == null) {
@ mainMessage = "无详细错误信息";
@ }
@ buffer.append(mainMessage).append(" [").append(e.getClass().getName()).append("]\n");
// 添加堆栈跟踪信息
@ StackTraceElement[] stackTrace = e.getStackTrace();
@ if (stackTrace != null && stackTrace.length > 0) {
@ for (StackTraceElement element : stackTrace) {
@ buffer.append(" at ").append(element.toString()).append("\n");
@ }
@ } else {
@ buffer.append(" (无堆栈跟踪信息)\n");
@ }
// 处理异常原因链
@ Throwable cause = e.getCause();
@ int causeCount = 0;
@ while (cause != null) {
@ causeCount++;
@ // 获取原因异常信息
@ String causeMessage = cause.getLocalizedMessage();
@ if (causeMessage == null) {
@ causeMessage = cause.getMessage();
@ }
@ if (causeMessage == null) {
@ causeMessage = "无详细错误信息";
@ }
@ buffer.append("Caused by: ").append(causeMessage)
@ .append(" [").append(cause.getClass().getName()).append("]\n");
@ // 添加原因异常的堆栈跟踪
@ StackTraceElement[] causeStackTrace = cause.getStackTrace();
@ if (causeStackTrace != null && causeStackTrace.length > 0) {
@ for (StackTraceElement element : causeStackTrace) {
@ buffer.append(" at ").append(element.toString()).append("\n");
@ }
@ } else {
@ buffer.append(" (无堆栈跟踪信息)\n");
@ }
@ cause = cause.getCause();
@ }
@ return buffer.toString();
}
复制代码
作者:
2oon
时间:
前天 04:34
大佬牛逼
作者:
创世魂
时间:
前天 07:51
直接用 应用崩溃处理类 就行了。
作者:
howill2021
时间:
前天 12:16
创世魂 发表于 2025-7-25 07:51
直接用 应用崩溃处理类 就行了。
这个类是必须弹出窗口后才能获取吧,
非致命错误没必要弹窗让用户看到
欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/)
Powered by Discuz! X3.4