无法捕获Ionic 1应用程序中未处理的错误

时间:2018-11-22 13:55:56

标签: javascript ionic-framework error-handling dom-events

我们正在尝试在我们的混合Ionic 1应用程序上设置顶级全局未隐藏错误检测器。在this documentation之后,我们已经订阅了window.addEventListener,但它几乎没有捕获任何内容。然后,我们开始使用Angular's $exceptionHandler并部分解决了该问题,但仍然缺少HTTP和脚本错误。详细信息:

    window.addEventListener或Angular的$ exceptionHandler都没有处理
  • 资源错误(图像下载错误,脚本解析错误)
  • 控制器加载,诸如beforeEnter之类的离子事件,通过模板事件绑定从UI调用的离子方法,ajax调用引发的
  • 错误……window.addEventListener都不处理它们-Angular的$ exceptionHandler处理他们
  • 令人惊讶的是,setTimeout
  • 正确地处理了来自所有这些地方 window.addEventListener安排的所有代码

接下来的文件展示了所有已保证的内容:

// app.js

angular.module("starter", [dependencies]).config(function () {
    window.addEventListener("error", function (event) {
        console.error("Error caught", event);
    });
});

// controllers.js

angular.module('starter.controllers', [dependencies]).controller("HomeCtrl", function ($scope, $http) {
    var nullVariable = null;
    var assignmentTarget;

    $scope.testClick = function () {
        setTimeout(function () {
            assignmentTarget = nullVariable.testClickTimeout; // handled
        }, 0);

        assignmentTarget = nullVariable.testClick; // unhandled
    };

    $scope.$on('$ionicView.beforeEnter', function () {
        setTimeout(function () {
            assignmentTarget = nullVariable.homeCtrlBeforeEnterTimeout; // handled
        }, 0);

        assignmentTarget = nullVariable.homeCtrlBeforeEnter; // unhandled
    });

    $http({
        method: "GET",
        responseType: "json",
        url: "comeurl"
    }).then(function (response) {
        setTimeout(function () {
            assignmentTarget = nullVariable.ajaxResponseTimeout; // handled
        }, 0);

        assignmentTarget = nullVariable.ajaxResponse; // unhandled
    });

    setTimeout(function () {
        assignmentTarget = nullVariable.homeCtrlTimeout; // handled
    }, 0);

    assignmentTarget = nullVariable.homeCtrl; // unhandled

});

0 个答案:

没有答案