• Erlang中一些错误或者异常的标识


     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 系统限制错误,某些性能或数据达到系统极限 

     

  • 相关阅读:
    用简单的方法解决问题
    记一次调试
    工作笔记还是蛮有用
    35岁往上做什么
    2013年个人总结
    一个C++宏定义与枚举定义重复的编译错误
    动态库的麻烦之处
    谈谈软件项目的dependency
    创建pathing jar
    谈谈patch strategy
  • 原文地址:https://www.cnblogs.com/zhepama/p/4265646.html
Copyright © 2020-2023  润新知