Improve this Doc View Source

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.

## Example:

    angular.module('exceptionOverride', []).factory('$exceptionHandler', function () {
      return function (exception, cause) {
        exception.message += ' (caused by "' + cause + '")';
        throw exception;
      };
    });

This example will override the normal action of `$exceptionHandler`, to make angular exceptions fail hard when they happen, instead of just logging to the console.

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.