专栏首页腾讯Bugly的专栏关于移动 App H5 页面里的 JavaScript 异常捕获

关于移动 App H5 页面里的 JavaScript 异常捕获

自 HTML5 标准正式发布之后,其得天独厚的跨平台特性吸引了众多开发者的目光。

伴随着 HTML5 的发展,JavaScript 的重要性也在逐步增加,要说现在哪门语言最火的话,那一定是 JavaScript 了。 学了JavaScript 成为全栈工程师,迎娶白富美,步入人生巅峰,想想也是醉了。

但有个问题:很多开发者却并未考虑过收集 JavaScript 出错时抛出的异常信息。因为只要 JavaScript 异常后 App 不会崩溃,当没有发生过就好了。

或许,在浏览器时代,让用户刷新下页面,可以解决异常问题。但是在移动 App 的 H5 页面,一但出现异常将导致程序无法正常运行,用户也不是那么容易可以通过刷新来解决问题的。

这里,我们就简单介绍 JavaScript 的异常处理方式。

一般地,对于 JavaScript 异常,可以通过下列两种方式处理:

  • try-catch 主动 catch 异常处理或上报
  • window.onerror 监听错误事件捕获未处理的异常
  • 用 try-catch 语句捕获异常
try {   
    function();
} catch(e) {   
    console.log(e); 
    // report error maybe
}

>

  • 通过监听 window.onerror 事件捕获异常
window.onerror = function (errorMsg, url, lineNumber) {  
    console.log('Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber);   
    // report error maybe
}

上述的方法只能获取到出错信息,url 及行号信息。

所幸在新的标准草案里,window.onerror 添加了两个参数:列号和异常堆栈

>

window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {   
    console.log('Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber + ' Column: ' + column + ' StackTrace: ' +  errorObj);
}

目前新的标准草案已经被主流的浏览器所支持,但是在移动平台里,新标准目前只被 Android 支持,所以可以在 Android 的 webview 里获取到完整的异常信息。

但是 iOS 平台的 WebView,还无法获取到堆栈信息,针对 iOS 平台,建议是发现异常信息后,在出错函数内用 try-catch 方式主动上报异常,以此解决信息缺失问题。

关于JS的异常捕获,想更详细了解的同学可以看看这篇文章:如何捕获和分析 JavaScript Error

http://www.cnblogs.com/cathsfz/p/how-to-capture-and-analyze-javascript-error.html

目前,Bugly 新发布的 JS 异常捕获能力同时支持上述的两种方案,如果是用 try-catch 捕获的,可以通过我们提供的主动上报接口进行上报

>

try {   
    function();
} catch (e) {
    Bugly.reportException(e);
}
  • 未被 try-catch 捕获的 JS 异常,我们也会通过 window.onerror 收集并上报,同时我们也采集了一些可以辅助发现问题的信息,如 userAgent 等,协助开发者发现问题。

更多信息可以查阅Bugly SDK使用指南:iOS , Android


本文系腾讯Bugly独家内容,转载请在文章开头显眼处注明注明作者和出处“腾讯Bugly(http://bugly.qq.com)”

腾讯Bugly 最专业的质量跟踪平台

为您定期分享应用崩溃解决方案

本文分享自微信公众号 - 腾讯Bugly(weixinBugly),作者:Ben

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-12-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为程序员定制的对联,总有一副适合您

    今天是大年初一,精神哥在这里给大家拜年了。前几天精神哥在朋友圈看到某位产品写的一副对联引起了程序员的吐槽: ? 才华横溢的程序员们表示:写对联神马的,So E...

    腾讯Bugly
  • 【版本升级】PerfDog新增多维度测试报告对比功能、iOS电量测试功能升级

    ? 伴随春日暖阳,疫情终将过去,PerfDog在新的一年为广大用户带来重磅更新:新增多维度测试报告对比功能,iOS电量测试功能全新升级。诚邀大家体验。 版本更...

    腾讯Bugly
  • Android 插件技术实战总结

    前言 安卓应用开发的大量难题,其实最后都需要插件技术去解决。 现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家...

    腾讯Bugly
  • 【SAP HANA系列】SAP HANA XS使用服务器JavaScript Libraries详解

    上一篇我们讲了SAP HANA XS JavaScript的安全事项,这一篇讲一下JavaScript的资源库使用。

    matinal
  • 前端基本内容概述

    星辉
  • 今年最值得期待的JavaScript传奇绿皮书登场!

    它就是有着 JavaScript 传奇绿皮书美名的《JavaScript语言精髓与编程实践》!在经过了两个版本的积累和三年的全面重写后,我们迎来了它的第三版的问...

    博文视点Broadview
  • JavaScript 简史

    「 JavaScript 」 诞生于 1995年,当时主要是用于处理由服务器负责的一些输入验证操作。

    六小登登
  • 你必须知道的Javascript 系列

      JavaScript是见过最多人说它“有趣”,“好玩”的一门语言。不仅仅是因为它的灵活性,包括它本身很多的特性,比如说原型链,作用域链都是非常好玩的东西。现...

    用户1153966
  • 如何正确学习JavaScript(写给非JavaScript程序员和编程新手)

    目录 不要这样学习JavaScript 本课程资源 1~2周(简介,数据类型,表达式和操作符) 3~4周(对象,数组,函数,DOM,jQuery) JavaSc...

    前朝楚水
  • 2015 年 JavaScript 开发者调查报告

    年底将至,JavaScript 开发者调查也已经结束,此次调查总共有 5000 份回复,我真的迫不及待要分享这次调查的细节,感谢所有的参与者,这是 JavaSc...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券