error_handler
error_handler
模块
error_handler
模块摘要
默认系统错误处理程序。
描述
这个模块定义了当某些类型的错误发生时会发生什么。
出口
raise_undef_exception(Module,Function,Args) - > no_return()
类型
A (possibly empty) list of arguments `Arg1,..,ArgN`
提出undef
带有堆栈跟踪的异常,指示Module:Function/N
还没有定义。
undefined_function(Module,Function,Args) - > any()
类型
A (possibly empty) list of arguments `Arg1,..,ArgN`
如果调用Module:Function(Arg1,.., ArgN)
和Module:Function/N
还没有定义。注意,这个函数是在执行原始调用的过程中计算的。
此功能首先尝试自动加载。Module
如果这不可能,undef
引发异常。
如果有可能的话Module
和功能Function/N
是导出的,它被称为。
否则,如果函数'$handle_undefined_function'/2
被导出,则称为'$handle_undefined_function'(
Function,Args)。
警告
'$handle_undefined_function'/2
在普通的应用程序代码中定义是非常不鼓励的。做出可能需要很长时间调试的微妙错误是非常容易的。此外,静态代码分析工具(如Dialyzer和Xref)'$handle_undefined_function'/2
都不支持使用,也不会添加这种支持。仔细考虑其他危险较小的解决方案后,才能使用此功能。潜在合法使用的一个例子是在测试和调试期间为其他子系统创建存根。
否则undef
引发异常。
undefined_lambda(Module,Fun,Args) - > term()
类型
A (possibly empty) list of arguments `Arg1,..,ArgN`
如果调用Fun(Arg1,.., ArgN)
当定义乐趣的模块没有加载时。函数在执行原始调用的过程中进行评估。
如果Module
,则调用解释器,并返回解释的值。Fun(Arg1,.., ArgN)
回电话。
否则,如果可能,它将返回apply(Fun, Args)
在尝试自动加载之后Module
如果这是不可能的,则调用失败并有退出原因。undef
...
注记
代码error_handler
很复杂。如果不完全了解错误处理程序之间的交互,请不要更改它。init
进程的代码服务器,以及I/O机制的代码。
看起来很小的代码更改会导致死锁,因为可能会发生不可预见的后果。使用input
在这种类型的代码中是危险的。