Improve this Doc View Source

## Overview

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.

## Example:

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); }`

## Dependencies

- `$log`

## Usage

`$exceptionHandler(exception, [cause]);`

### Arguments

Param | Type | Details
--- | --- | ---
exception | Error | Exception associated with the error.
cause (optional) | string | Optional information about the context in which the error was thrown.