You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NativeScript混合移动应用崩溃捕获及错误原因记录方案咨询

没问题!针对你开发NativeScript移动应用时需要捕获崩溃事件、记录错误原因的需求,我把你找到的那段代码完善并整理成了更实用的完整方案:

NativeScript 崩溃事件捕获与错误记录实现

NativeScript 提供了全局的uncaughtErrorEvent事件,可以用来捕获未被处理的异常(也就是导致应用崩溃的错误),下面是跨Android和iOS平台的完整实现:

核心崩溃监听代码

首先在应用的入口文件(比如app.js或main.ts)中添加以下代码:

var application = require("application");
var fs = require("file-system");

application.on(application.uncaughtErrorEvent, function (args) {
    // 通用错误信息收集
    let errorLog = `[${new Date().toISOString()}] 应用崩溃:\n`;

    if (args.android) {
        // Android 平台专属处理
        const throwable = args.android;
        errorLog += `平台: Android\n`;
        errorLog += `错误消息: ${throwable.getMessage()}\n`;
        errorLog += `错误堆栈:\n${throwable.getStackTrace().toString()}\n`;
    } else if (args.ios) {
        // iOS 平台专属处理
        const exception = args.ios;
        errorLog += `平台: iOS\n`;
        errorLog += `错误名称: ${exception.name}\n`;
        errorLog += `错误原因: ${exception.reason}\n`;
        errorLog += `调用堆栈:\n${exception.callStackSymbols.join('\n')}\n`;
    }

    // 记录错误到本地文件(也可以改成发送到后端服务器)
    saveErrorLog(errorLog);
    
    // 注意:如果是严重崩溃,应用可能还是会退出,但错误信息已经被记录
});

// 辅助函数:保存错误日志到本地文件
function saveErrorLog(logContent) {
    const documentsPath = fs.knownFolders.documents().path;
    const logFilePath = fs.path.join(documentsPath, "crash_logs.txt");
    
    // 追加写入日志
    fs.writeText(logFilePath, logContent + '\n\n', { append: true })
        .then(() => console.log("崩溃日志已保存"))
        .catch(err => console.error("保存日志失败:", err));
}

关键说明

  • application.uncaughtErrorEvent会捕获所有未被try/catch包裹的异常,是捕获崩溃的核心入口
  • Android平台的args.android是原生Java的Throwable对象,可以调用原生方法获取详细堆栈信息
  • iOS平台的args.ios是原生Objective-C的NSException对象,包含错误名称、触发原因和完整调用堆栈
  • 示例中把日志保存到了应用的documents目录,你也可以根据需求改成上传到后端服务,方便后续的数据分析工作

这样就能完整捕获应用的崩溃事件并记录下足够的错误信息,满足你的数据分析需求啦!

内容的提问来源于stack exchange,提问作者Gauzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:18:43