erlang趣事五之catch和try_catch
2016-03-06 11:11
211 查看
前一段时间得到一份erlang的面试题,看了之后觉得好多都不会
,趁周末有时间整理下。
本人水平比较菜,所以不知道,就去找书去了。
我又看了一遍 第6章:顺序编程的错误处理
得到了答案:
首先,我写个测试的moudle,便于理解。上代码:
看明白了没,
书上关于两者的说明是:
try...catch
首先执行FuncOrExpessionSeq,如果执行过程中没有抛出异常错误,就会返回需要的返回值;
如果执行过程中抛出了异常错误,那么就会在catch里进行匹配,ExceptionType 是一个原子(throw,exit,error其中一个),如果省略它,就会使用默认值throw。
catch
在catch语句里发生异常,就会转换成一个描述词错误的{‘EXIT’,...}的元组。
并且两中方法提供了不同量级的调试信息。catch提供了详细的栈跟踪信息。
栈跟踪:erlang:get_stacktrace().
本人菜鸟水平,如有不对,请指正,大神请绕过!
,趁周末有时间整理下。
简述catch与try…catch用法上的区别,以及怎么获取最近的栈跟踪信息。
当时看到后,心里默念什么鬼?本人水平比较菜,所以不知道,就去找书去了。
我又看了一遍 第6章:顺序编程的错误处理
得到了答案:
首先,我写个测试的moudle,便于理解。上代码:
-module(test1). %%% ================================================================= %%% API functions %%% ================================================================= -export([ test_try_catch/0, test_catch/0]). %%% ================================================================= %%% Internal functions %%% ================================================================ test_try_catch()-> try 1/0 catch throw:Term -> Term; exit:Reason -> Reason; error:Reason-> Reason end. test_catch()-> catch 1/0.
看明白了没,
书上关于两者的说明是:
try...catch
首先执行FuncOrExpessionSeq,如果执行过程中没有抛出异常错误,就会返回需要的返回值;
如果执行过程中抛出了异常错误,那么就会在catch里进行匹配,ExceptionType 是一个原子(throw,exit,error其中一个),如果省略它,就会使用默认值throw。
catch
在catch语句里发生异常,就会转换成一个描述词错误的{‘EXIT’,...}的元组。
并且两中方法提供了不同量级的调试信息。catch提供了详细的栈跟踪信息。
栈跟踪:erlang:get_stacktrace().
本人菜鸟水平,如有不对,请指正,大神请绕过!
相关文章推荐
- MemCache在Windows下环境的搭建及启动
- Java学习笔记
- [LeetCode]206. Reverse Linked List
- Linux第二周学习总结——操作系统是如何工作的
- [国嵌攻略][108][Linux内核链表]
- wcf
- 使用CSS实现的平面阴影进度条效果
- JavaScript中三种异步上传文件方式
- jquery数据库在线查询条件编辑器QueryBuilder使用经验
- 《BI那点儿事—数据的艺术》目录索引
- jQery.form.js中文API【整理】
- sublime 常见错误 UnicodeDecodeError: 'gbk' codec can't decode bytes
- 51nod 1080 两个数的平方和
- Cocos2d-x游戏主循环
- 20145324 《Java程序设计》第1周学习总结
- 郝爽-----项目开发经验
- poj3579 双重二分,有意思的一道题,注意二分边界
- POJ 2533 动态规划入门 (LIS)
- POJ 2533 动态规划入门 (LIS)
- Java的native方法