`
qqdenghaigui
  • 浏览: 120524 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Erlang error list

 
阅读更多

erlang中错误大体分为四种: 

 

   1. 编译错误 

   2. 逻辑错误 

   3. 运行时错误 

   4. 用户代码生成的错误 

 

编译错误,主要是编译器检测出的代码语法错误 

逻辑错误,是指程序没有完成预期的工作,属于开发人员的问题 

运行时错误,是指erlang运行时抛出的错误,比如对非数据类型执行算术运算,erlang运行时会捕获异常,并抛出。在erlang中,这类异常的类型为error 

用户自定义错误,是指通过exit/1或者throw/1生成 

 

我们把运行时错误以及用户抛出的错误称为异常(exception),他们具有三种类型:throw, error, exit。 

error型异常,通过erlang:error/1, 2生成,也可以使用早期的erlang:fault/1, 2 

throw型异常,通过throw/1生成 

exit型异常,通过exit/1生成 

 

在erlang中,进程内的异常可以通过try, catch来进行捕获处理。 

推荐使用try,其为新添加的语法。进程间的异常可以通过监督树(supervisor tree),监控进程(monitor)来实现。 

 

badarg 参数错误,参数格式或类型错误 

badarith 算术表达式错误,算术表达式中含有错误的参数 

{badmatch,V} 模式匹配错误,V指具体的发生匹配错误的数值 

function_clause 函数子句错误,没有找到匹配的函数子句 

{case_clause,V} case匹配错误,没有找到匹配的case pattern 

if_clause if子句错误,没有找到为ture的if子句 

{try_clause,V} try匹配错误,执行try时,没有找到匹配的pattern 

undef 函数未定义错误 

{badfun,F} 函数错误 

{badarity,F} 函数参数个数错误 

timeout_value 超时参数错误,在receive.. after语法中,after对应的超时数据错误(应为不小于0的integer或infinity 

noproc Process 错误,Process不存在 

{nocatch,V} throw未被catch 

system_limit 系统限制错误,某些性能或数据达到系统极限 

 

分享到:
评论

相关推荐

    for_each_file 用erlang代码实现遍历文件

    Erlang的文件操作API(如`file:list_dir/1`、`file:open/2`、`file:read_line/1`和`file:close/1`)是处理文件系统操作的核心部分。它们提供了一种安全且并发友好的方式来访问和操作文件。`filename:join/1,2`函数...

    erlang程序设计第二版课后习题答案(精简版).zip

    3. **列表处理(List Comprehensions)**:Erlang提供了强大的列表处理工具,可以用于生成新列表或对列表进行操作。习题可能考察如何使用列表解析进行数据过滤和转换。 4. **模块(Modules)**:Erlang的模块系统有...

    erl_nif_rustler_过程宏写法

    erlang:nif_error(undefined). ``` 编译并运行Erlang代码后,就可以通过Erlang Shell调用`my_function`了。注意,确保Rust库(如`ap114_nif.dll`)和Erlang模块在同一目录下,且文件名与`on_load/0`中的`SoName`...

    erlang环境配置借鉴.pdf

    下载 Flymake 插件后,解压缩并将其安装到 .emacs.d 目录,然后创建一个 check_error.erl 文件,其中包含以下内容: % Dialyzer enhanced flymake checker for Erlang % Copyright (c) 2011, bkil.hu % This ...

    erlang环境配置[定义].pdf

    最后,为了进行语法检查和错误提示,用户添加了Flymake插件,特别是针对Erlang的Dialyzer增强版检查器`check_error.erl`。Flymake可以实时检测代码中的错误,提高代码质量。 通过以上步骤,用户成功地在Windows环境...

    Eralng笔试题

    ### Erlang 编程练习题解析 #### Q1:编写一个函数 `sum/2`,该函数接收两个整数 `N` 和 `M`(其中 `N` 小于等于 `M`),返回 `N` 和 `M` 之间的所有整数之和。如果 `N` 大于 `M`,则返回错误。 **示例:** ```...

    erlanghandbook

    Below, we explore crucial concepts covered in this handbook, including the structure of an Erlang program, datatypes, functions, processes, error handling, distributed Erlang, ports and port drivers,...

    Elixir程序设计语言221

    iex> is_list('Character list') true 集合与Enum模块 Elixir 提供了几种集合类型,如列表、映射、元组和集合。Enum 模块提供了处理列表的大量函数,例如遍历、过滤和转换: iex> numbers = [1, 2, 3, 4, 5] [1, 2...

    ex_monad_lib_example:使用 Elixir Monad 库的各种 monad 示例

    Elixir 是一种基于 Erlang VM 的函数式编程语言,它提供了丰富的工具和库来支持 Monad 操作。本项目 "ex_monad_lib_example" 提供了使用 Elixir Monad 库的一系列示例,帮助开发者更好地理解和应用 Monad。 Monad ...

    形式:用于Elixir的基于Typespec的JSON类数据解析

    Elixir中的函数通常使用模式匹配来处理可能的错误,例如,`Jason.decode/1`会返回`{:ok, data}`或`{:error, reason}`。 7. **集成到项目**:解析库如`ParsingElixir`可能会提供便利的宏或模块,简化在项目中使用和...

Global site tag (gtag.js) - Google Analytics