这篇文章主要介绍了使用Raygun来自动追踪AngularJS中的异常,AngularJS是一款高人气的JavaScript库,需要的朋友可以参考下
Angular.js取得的巨大成就之一是实用的异常抛出,因为异常信息经常能够准确的表明你的代码为什么崩溃了。运行于世界各地的众多浏览器的大型客户端web应用会面临异常丢失的问题,而捕获它就有可能修复 bug并赢得用户。
当处理跨浏览器和设备的问题时,接收这些异常信息是很重要的,因为你的应用可能在你的开发机器上运行得正确可靠,但在你的用户的浏览器上却是另一番场景。
其解决方案是需要一个自动异常跟踪服务,而Raygun通过接收你的Angular web应用抛出的所有异常但不需要你做任何事,从而简化了这项工作。它的设置真的很快--只需要按照以下步骤将Raygun hook到你的应用就可以了。
安装
首先,下载小巧的Raygun4JS脚本,并把它添加到你的项目中。有3个途径获得:
通过Bower
代码如下:
bower install raygun4js
从NuGet获得——在Visual Studio中,打开包管理器控制台然后输入:
代码如下:
Install-Package raygun4js
手动下载 – 点击此处下载dev版 或者压缩过的版本
配置
接下来,引用这个脚本。如果你使用静态的HTML,将 添加到页面里面或添加到你的模块加载器中。
最后,在你的Angular主逻辑执行之前调用下面的代码来设置Raygun4JS:
? 1 Raygun.init('YOUR_API_KEY').attach();
你可以为每一个用Raygun创建的app生成一个API key,你可以在你的Raygun dashboard 中访问他——你有30天免费试用时间来测试它。
在Angular中捕获异常
至少有两种方法将未处理的异常注射到Angular.js的模块中,通过使用decorator 或 factory。这两种方式会为你提供$exceptionHandler的具体实现,我们上面所提到的Raygun4JS会将该实现发送给Raygun。
使用一个装饰器
装饰器模式因其不会覆盖掉原有的行为,所以很适合用来将行为注入到任意的服务中,以确保在其它所期望的特性中分离关注点,它也是记录日志和处理异常的理想方式. 在Angular.js中它可以使用在 $provide 服务中,我们将用来实现我们自己的
? 1 2 3 4 5 6 7 8 9 10 $exceptionHandler 函数: app.config(function ($provide) { $provide.decorator("$exceptionHandler", ['$delegate', function($delegate) { return function (exception, cause) { Raygun.send(exception); $delegate(exception, cause); } }]) });$delegate 是异常处理器的实体,我们会调用它来获得输出到控制台的原始行为.
你也可以按照自己的需要创建足够多的其它服务:
新闻热点
疑难解答