鸿蒙三方库 | harmony-utils之CrashUtil全局异常捕获详解

发布时间:2026/7/22 20:29:39

鸿蒙三方库 | harmony-utils之CrashUtil全局异常捕获详解 前言全局异常捕获是应用稳定性保障的重要手段可以防止应用因未处理的异常而崩溃同时收集异常信息用于问题排查。pura/harmony-utils的CrashUtil封装了全局异常捕获方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、CrashUtil核心APICrashUtil提供了以下全局异常捕获方法方法说明参数使用场景setCrashHandler(callback)设置全局异常处理器callback异常捕获getCrashLog()获取崩溃日志无问题排查1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃日志收集支持崩溃日志的收集和查询1.2 异常处理策略策略说明适用场景全局捕获捕获所有未处理异常应用稳定性保障日志记录记录异常堆栈信息问题排查用户提示友好提示用户用户体验二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 设置全局异常捕获import{CrashUtil}frompura/harmony-utils;aboutToAppear(){CrashUtil.setCrashHandler((error){console.error(全局异常捕获:,error.message);this.result捕获异常:${error.message};});}2.3 获取崩溃日志Button(获取崩溃日志).width(100%).onClick((){try{letlogCrashUtil.getCrashLog();this.result崩溃日志:\n${log||无崩溃记录 ✅};}catch(e){this.result异常: e;}})三、完整页面示例import{CrashUtil}frompura/harmony-utils;EntryComponentstruct CrashDemo{Stateresult:string;aboutToAppear(){CrashUtil.setCrashHandler((error){this.result捕获异常:${error.message};});}build(){Column({space:12}){Button(设置异常捕获).width(100%).onClick((){this.result全局异常捕获已设置 ✅;});Button(获取崩溃日志).width(100%).onClick((){letlogCrashUtil.getCrashLog();this.resultlog||无崩溃记录;});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 异常上报import{CrashUtil,LogUtil}frompura/harmony-utils;CrashUtil.setCrashHandler((error){LogUtil.error(CrashReport,异常:${error.message});uploadCrashReport({message:error.message,stack:error.stack,timestamp:Date.now(),deviceInfo:DeviceUtil.getDeviceModel()});});4.2 异常恢复CrashUtil.setCrashHandler((error){LogUtil.error(CrashHandler,error.message);letcrashLogCrashUtil.getCrashLog();PreferencesUtil.putString(last_crash,crashLog);ToastUtil.showToast(应用遇到异常已自动恢复);});五、注意事项设置时机建议在应用启动时设置异常处理器异常类型只能捕获JS层异常原生层崩溃需其他方案日志大小崩溃日志可能较大建议定期清理初始化依赖使用前需确保AppUtil.init()已调用隐私保护异常日志中不要包含用户敏感信息六、常见问题Q1: setCrashHandler()后仍崩溃CrashUtil捕获的是JS层异常原生层崩溃无法捕获。Q2: getCrashLog()返回空可能是应用从未崩溃过或崩溃日志已被清理。Q3: 如何将崩溃日志发送给开发者可以在异常回调中将日志上传到服务器或引导用户通过邮件发送。Q4: 异常处理器可以设置多个吗只能设置一个异常处理器后设置的会覆盖前面的。总结CrashUtil的全局异常捕获方法为应用稳定性提供了重要保障。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用异常捕获可以提升应用的用户体验和问题排查效率。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。

相关新闻