Unable to capture unhandled errors on Ionic 1 apps
up vote
0
down vote
favorite
We are trying to setup a top level global unhadled error detector on our hybrid Ionic 1 app. Following this documentation, we have subscribed to window.addEventListener
in order to do so, but it's capturing almost nothing. Then, we started using Angular's $exceptionHandler and it solves the issue partially, but it's still missing the HTTP and script errors. Details:
- resource errors (image download errors, script parse errors) are not being handled by
window.addEventListener
nor by Angular's $exceptionHandler - errors thrown by controller loading, ionic events like
beforeEnter
, ionic methods called from the UI through template events bindings, ajax calls... none of them are handled bywindow.addEventListener
- Angular's $exceptionHandler does handle them - Surprisingly, all code scheduled with a
setTimeout
from all those places is properly handled bywindow.addEventListener
Next files demonstrates all what has been assured:
// 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
});
javascript ionic-framework error-handling dom-events
add a comment |
up vote
0
down vote
favorite
We are trying to setup a top level global unhadled error detector on our hybrid Ionic 1 app. Following this documentation, we have subscribed to window.addEventListener
in order to do so, but it's capturing almost nothing. Then, we started using Angular's $exceptionHandler and it solves the issue partially, but it's still missing the HTTP and script errors. Details:
- resource errors (image download errors, script parse errors) are not being handled by
window.addEventListener
nor by Angular's $exceptionHandler - errors thrown by controller loading, ionic events like
beforeEnter
, ionic methods called from the UI through template events bindings, ajax calls... none of them are handled bywindow.addEventListener
- Angular's $exceptionHandler does handle them - Surprisingly, all code scheduled with a
setTimeout
from all those places is properly handled bywindow.addEventListener
Next files demonstrates all what has been assured:
// 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
});
javascript ionic-framework error-handling dom-events
1
Are you looking for $exceptionHandler? angularjs handles there "unhandled js errors" so they're not unhandled anymore
– barbsan
Nov 22 at 14:32
@barbsan thank you, it helped handle the JS errors, but not the HTTP errors and script errors, which is the reason for wanting to use the global error handler
– Áxel Costas Pena
Dec 3 at 10:52
Have you tried rethrowing there angularJS errors and use your global error handler?
– barbsan
Dec 3 at 10:56
maybe I am not explaining right. The HTTP errors launch no error handler and no Angular handler
– Áxel Costas Pena
Dec 3 at 23:59
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
We are trying to setup a top level global unhadled error detector on our hybrid Ionic 1 app. Following this documentation, we have subscribed to window.addEventListener
in order to do so, but it's capturing almost nothing. Then, we started using Angular's $exceptionHandler and it solves the issue partially, but it's still missing the HTTP and script errors. Details:
- resource errors (image download errors, script parse errors) are not being handled by
window.addEventListener
nor by Angular's $exceptionHandler - errors thrown by controller loading, ionic events like
beforeEnter
, ionic methods called from the UI through template events bindings, ajax calls... none of them are handled bywindow.addEventListener
- Angular's $exceptionHandler does handle them - Surprisingly, all code scheduled with a
setTimeout
from all those places is properly handled bywindow.addEventListener
Next files demonstrates all what has been assured:
// 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
});
javascript ionic-framework error-handling dom-events
We are trying to setup a top level global unhadled error detector on our hybrid Ionic 1 app. Following this documentation, we have subscribed to window.addEventListener
in order to do so, but it's capturing almost nothing. Then, we started using Angular's $exceptionHandler and it solves the issue partially, but it's still missing the HTTP and script errors. Details:
- resource errors (image download errors, script parse errors) are not being handled by
window.addEventListener
nor by Angular's $exceptionHandler - errors thrown by controller loading, ionic events like
beforeEnter
, ionic methods called from the UI through template events bindings, ajax calls... none of them are handled bywindow.addEventListener
- Angular's $exceptionHandler does handle them - Surprisingly, all code scheduled with a
setTimeout
from all those places is properly handled bywindow.addEventListener
Next files demonstrates all what has been assured:
// 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
});
javascript ionic-framework error-handling dom-events
javascript ionic-framework error-handling dom-events
edited Dec 3 at 10:51
asked Nov 22 at 13:55
Áxel Costas Pena
2,20131947
2,20131947
1
Are you looking for $exceptionHandler? angularjs handles there "unhandled js errors" so they're not unhandled anymore
– barbsan
Nov 22 at 14:32
@barbsan thank you, it helped handle the JS errors, but not the HTTP errors and script errors, which is the reason for wanting to use the global error handler
– Áxel Costas Pena
Dec 3 at 10:52
Have you tried rethrowing there angularJS errors and use your global error handler?
– barbsan
Dec 3 at 10:56
maybe I am not explaining right. The HTTP errors launch no error handler and no Angular handler
– Áxel Costas Pena
Dec 3 at 23:59
add a comment |
1
Are you looking for $exceptionHandler? angularjs handles there "unhandled js errors" so they're not unhandled anymore
– barbsan
Nov 22 at 14:32
@barbsan thank you, it helped handle the JS errors, but not the HTTP errors and script errors, which is the reason for wanting to use the global error handler
– Áxel Costas Pena
Dec 3 at 10:52
Have you tried rethrowing there angularJS errors and use your global error handler?
– barbsan
Dec 3 at 10:56
maybe I am not explaining right. The HTTP errors launch no error handler and no Angular handler
– Áxel Costas Pena
Dec 3 at 23:59
1
1
Are you looking for $exceptionHandler? angularjs handles there "unhandled js errors" so they're not unhandled anymore
– barbsan
Nov 22 at 14:32
Are you looking for $exceptionHandler? angularjs handles there "unhandled js errors" so they're not unhandled anymore
– barbsan
Nov 22 at 14:32
@barbsan thank you, it helped handle the JS errors, but not the HTTP errors and script errors, which is the reason for wanting to use the global error handler
– Áxel Costas Pena
Dec 3 at 10:52
@barbsan thank you, it helped handle the JS errors, but not the HTTP errors and script errors, which is the reason for wanting to use the global error handler
– Áxel Costas Pena
Dec 3 at 10:52
Have you tried rethrowing there angularJS errors and use your global error handler?
– barbsan
Dec 3 at 10:56
Have you tried rethrowing there angularJS errors and use your global error handler?
– barbsan
Dec 3 at 10:56
maybe I am not explaining right. The HTTP errors launch no error handler and no Angular handler
– Áxel Costas Pena
Dec 3 at 23:59
maybe I am not explaining right. The HTTP errors launch no error handler and no Angular handler
– Áxel Costas Pena
Dec 3 at 23:59
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53432555%2funable-to-capture-unhandled-errors-on-ionic-1-apps%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Are you looking for $exceptionHandler? angularjs handles there "unhandled js errors" so they're not unhandled anymore
– barbsan
Nov 22 at 14:32
@barbsan thank you, it helped handle the JS errors, but not the HTTP errors and script errors, which is the reason for wanting to use the global error handler
– Áxel Costas Pena
Dec 3 at 10:52
Have you tried rethrowing there angularJS errors and use your global error handler?
– barbsan
Dec 3 at 10:56
maybe I am not explaining right. The HTTP errors launch no error handler and no Angular handler
– Áxel Costas Pena
Dec 3 at 23:59