Any uncaught exception in AngularJS expressions is delegated to this service.
The default implementation simply delegates to $log.error
which logs it into
the browser console.
In unit tests, if angular-mocks.js
is loaded, this service is overridden by
mock $exceptionHandler which aids in testing.
The example below will overwrite the default $exceptionHandler
in order to (a) log uncaught
errors to the backend for later inspection by the developers and (b) to use $log.warn()
instead
of $log.error()
.
angular.
module('exceptionOverwrite', []).
factory('$exceptionHandler', ['$log', 'logErrorsToBackend', function($log, logErrorsToBackend) {
return function myExceptionHandler(exception, cause) {
logErrorsToBackend(exception, cause);
$log.warn(exception, cause);
};
}]);
on
/bind
methods) does not delegate exceptions to the $exceptionHandler
(unless executed during a digest).
If you wish, you can manually delegate exceptions, e.g.
try { ... } catch(e) { $exceptionHandler(e); }