Any uncaught exception in angular 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); }; }]);Note, that code executed in event-listeners (even those registered using jqLite's
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); }
$exceptionHandler(exception, [cause]);
Param | Type | Details |
---|---|---|
exception | Error | Exception associated with the error. |
cause (optional) | string | Optional information about the context in which the error was thrown. |
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.5.11/docs/api/ng/service/$exceptionHandler