非常教程

Erlang 20参考手册

核心 | kernel

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在这种类型的代码中是危险的。

Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1