# error_handler

### MODULE

error_handler

### MODULE SUMMARY

Default System Error Handler

### DESCRIPTION

The error handler module defines what happens when certain types of errors occur.

### EXPORTS

`undefined_function(Module, Function, Args) -> term()`

Types:

`Module = Function = atom()`
`Args = [term()]`

A (possibly empty) list of arguments `Arg1,..,ArgN`

This function is evaluated if a call is made to `Module:Function(Arg1,.., ArgN)` and `Module:Function/N` is undefined. Note that `undefined_function/3` is evaluated inside the process making the original call.

If `Module` is interpreted, the interpreter is invoked and the return value of the interpreted `Function(Arg1,.., ArgN)` call is returned.

Otherwise, it returns, if possible, the value of `apply(Module, Function, Args)` after an attempt has been made to autoload `Module`. If this is not possible, the call to `Module:Function(Arg1,.., ArgN)` fails with exit reason `undef`.

`undefined_lambda(Module, Fun, Args) -> term()`

Types:

`Module = Function = atom()`
`Args = [term()]`

A (possibly empty) list of arguments `Arg1,..,ArgN`

This function is evaluated if a call is made to `Fun(Arg1,.., ArgN)` when the module defining the fun is not loaded. The function is evaluated inside the process making the original call.

If `Module` is interpreted, the interpreter is invoked and the return value of the interpreted `Fun(Arg1,.., ArgN)` call is returned.

Otherwise, it returns, if possible, the value of `apply(Fun, Args)` after an attempt has been made to autoload `Module`. If this is not possible, the call fails with exit reason `undef`.

### Notes

The code in `error_handler` is complex and should not be changed without fully understanding the interaction between the error handler, the `init` process of the code server, and the I/O mechanism of the code.

Changes in the code which may seem small can cause a deadlock as unforeseen consequences may occur. The use of `input` is dangerous in this type of code.

### AUTHORS

Joe Armstrong - support@erlang.ericsson.se
Robert Virding - support@erlang.ericsson.se
Magnus Froberg - support@erlang.ericsson.se

kernel 2.11.1
Copyright © 1991-2006 Ericsson AB