erlang的异常处理没有什么太大的特别的
异常分为:
- error
- throw
- exit(一般正常退出也用这个)
原来的做法是用catch:
1> catch 0. 0 2> catch throw(0). 0 3> catch a=b. {'EXIT',{{badmatch,b},[{erl_eval,expr,3,[]}]}} 4> catch exit(0). {'EXIT',0}
从上到下分别是:
正常:直接输出
throw异常:直接输出异常原因
error(匹配错误):输出详细内容
exit:输出退出和退出原因
然后有一个例子 简单记一下:
-module(excep). -export([ec_test/0]). ec_test() -> try %% throw("throw exception") %抛出一个异常 %% 0 %正常输出 %% a=b %一个匹配错误 exit(0) of 0 ->io:format("0~n"); _ ->io:format("other~n") catch throw:Case -> io:format("throw exception:~p~n",[Case]); error:Case -> io:format("error:~p~n",[Case]); exit:Case -> io:format("exit:~p~n",[Case]) after io:format("program exit~n") end.
格式可以是:
- try...catch...
- try..of..catch
- try...after,,,,
- 或者以上的 try...of...catch...after
只有try那边抛出的异常才会被捕获到
of和catch出现异常不会被捕获
after无论如何都会被执行,如果after有异常那么他的异常会取代掉try中的异常
这边的格式也需要注意
最后一定会有个end说明结束了
但每一块中的最后一个语句是不用加符号的(不用写 ,(逗号) 或者 ;(分号))
也顺便说下我关于符号的理解吧
句号 . 表示结束(用于shell输入语句 或者函数结束等)
分号 ; 表示并列(用书case if 和同名函数的并列)
逗号 . 表示顺序执行(好像说的不太对 when的条件,语句等)
$ 取对应字符的数值
# 进制#数值 例如 2#0101(5).
其他的内容
erlang:get_stacktrace(). 获得异常堆栈
erlang:raise(错误类别,原因,堆栈). 用来再次抛出异常.
相关推荐
erlang异常处理详解 开发经验: 面对软件错误构建可靠的分布式系统 编写分布式的 Erlang 程序:陷阱和对策 硝烟中的Erlang 深入底层: erlang VM基于多核处理器的可伸缩性特征 erlang VM内部数据共享机制 erlang ...
4. **异常处理**:Erlang使用`try...catch...throw`语句来处理错误,异常可以被显式抛出,也可以由运行时系统隐式抛出。 5. ** OTP(Open Telecom Platform)**:OTP是Erlang生态系统的核心,提供了一套用于构建...
### Erlang程序设计知识点概述 #### 1. Erlang基础语法与函数定义 ...Erlang是一门非常强大且灵活的语言,尤其适合处理并发和分布式系统。通过掌握这些基本概念和高级特性,可以有效地利用Erlang解决实际问题。
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建...通过阅读这本书,读者将能够理解Erlang如何处理并发、分布式计算和故障恢复,从而构建高效、健壮的软件系统。
- **错误处理**:Erlang采用异常处理机制,鼓励编写无副作用的纯函数,有助于编写容错性强的代码。 - **模式匹配**:Erlang的模式匹配功能允许在函数定义中使用模式来匹配和解构数据结构,简化了代码编写。 - **...
错误通常通过抛出异常来处理,而不是通过复杂的错误检查逻辑。 6. **模式匹配**:Erlang的函数调用允许模式匹配,使得解构复杂数据结构变得简单,提高了代码的可读性和可维护性。 课后习题的实践价值: 1. **理解...
Erlang提供了异常处理机制和错误恢复策略,这在面对软件错误时显得尤为重要。 5. ** OTP (Open Telecom Platform)**:OTP是Erlang的标准库,包含了一系列的设计原则、库和工具,用于帮助开发者构建高效、可靠和可...
(494页带目录的高清扫描版) 这是一本讲解Erlang编程语言的入门指南,内容通俗...内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。
错误和异常处理也是Erlang编程的一个重要部分。由于Erlang的设计哲学是容错,因此它提供了一套独特的机制来处理程序中可能出现的错误。 Erlang还提供了多种常用数据结构,比如元组、列表、字典、集合等,这些数据...
- **OTP(Open Telephony Platform)**:Erlang的核心库,包含大量预先设计的模块,用于处理常见的系统任务,如错误处理、分布式计算和监控。 - **行为模式**:如GenServer、GenEvent和Gen_fsm,它们定义了Erlang中...
- **错误处理**:Erlang的异常处理通过`try...catch...after`语句实现,允许优雅地处理错误情况。 了解了这些基础知识后,你可以开始编写Erlang程序,构建自己的并发应用,体验Erlang带来的高效和可靠性。记得在...
读书笔记:ErlangOTP设计原则中文文档
Erlang的强大并发处理能力和内置的分布式特性使得RabbitMQ成为处理大量并发消息的理想选择。在安装Erlang后,可以通过RabbitMQ的官方网站下载相应版本的安装包,或者从第三方源如CSDN获取,然后按照同样的方式安装。...
5. **错误处理和调试**:讨论在CNode中处理Erlang错误和异常的方法,以及如何利用Erlang的调试工具来排查问题。 6. **性能优化**:提供关于如何最大限度地提高CNode与Erlang节点之间通信效率的提示和最佳实践。 7....
- **错误处理和调试**:讨论Erlang的错误处理策略、异常处理和调试工具。 - ** OTP(开放电信平台)**:OTP是Erlang的标准库,包含了一系列设计模式和库,用于构建可靠和可扩展的应用,特别适合游戏服务器架构。 -...
3. **错误处理与容错**:Erlang推崇“let it crash”哲学,鼓励程序在遇到错误时快速失败并重启,而不是尝试修复。书里可能会讨论如何构建健壮的系统,利用Erlang的故障隔离特性。 4. **分布式编程**:Erlang进程...
在IT行业中,Erlang因其强大的实时性和处理大量并发连接的能力而被广泛应用于电信、互联网基础设施和实时系统。RabbitMQ,一个基于Erlang开发的消息队列系统,是实现异步通信的关键组件。 标题中提到的“Erlang官网...
Erlang采用actor模型,每个进程(在Erlang中称为进程,而非操作系统级的进程)都是独立的,通过消息传递进行通信,这种设计使得系统在处理大量并发任务时表现出色。 在"Erlang23_3"这个压缩包中,我们可以推测这...
Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...
4. **try_test.beam** - 这可能是用于测试异常处理的代码,Erlang使用`try...catch...finally`结构来捕获和处理异常,这在编写健壮的系统时非常关键。 5. **area_server_final.beam** - 这可能是一个服务器实现,...