博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elixir 1.7改进错误处理、日志和测试
阅读量:6532 次
发布时间:2019-06-24

本文共 1315 字,大约阅读时间需要 4 分钟。

致力于提升开发者体验,Elixir创建者José Valim这样写道。其中包括新增__STACKTRACE__结构检索堆栈踪迹,集成Erlang新增的:logger模块,改进Elixir的单元测试库ExUnit,支持文档元数据。

\\

Elixir 1.7改进了异常系统,ArgumentErrorArithmeticErrorKeyError异常提供了更多的诊断信息,并且新增一个__STACKTRACE__结构,可以用于代替System.stacktrace/0来检索堆栈踪迹:

\\
\try do\  ... 某个可能失败的操作 ...\rescue\  exception -\u0026gt;\    log(exception, __STACKTRACE__)\    reraise(exception, __STACKTRACE__)\end\
\\

__STACKTRACE__的作用域是在词法上确定的,不依赖于副作用,这点和System.stacktrace/0不同。据Valim介绍,这将给未来的Elixir版本带来性能提升,因为它使得try块结束后就不用再跟踪堆栈踪迹了。

\\

Elixir 模块现在插入了Erlang的:logger,这是由Erlang/OTP 21提供的,充分利用了后者丰富的元数据,包括:

\\
  • :crash_reason是一个包含两个元素的元组,第一个参数表示原因,包括抛出/错误/退出,第二个是堆栈踪迹。抛出的结构总是{:nocatch, term},错误总是Exceptions,而退出则涵盖了剩余的情况。\\t
  • :initial_call是进程开始时的初始调用。\\t
  • :registered_name是进程作为atom注册后的名称。\

此外,如果消息没有有效记录,那么Logger宏如debuginfo等就不会对它们的参数求值,新增的:compile_time_purge_matching选项允许基于编译时元数据过滤日志条目。例如,下面的代码展示了如何配置Logger使其忽略来自application :foo级别低于:info以及所有来自Bar.foo/3的日志调用:

\\
\config :logger,\  compile_time_purge_matching: [\    [application: :foo, level_lower_than: :info],\    [module: Bar, function: \"foo/3\"]\  ]\
\\

如上所述,Elixir的单元测试库也经过了改进,宏assert返回的信息更详细了。例如,如果assert some_function(expr1, var2)语句失败,它就会打印出some_function的参数值,这样,就可以为开发人员节省下重新运行测试来查看它们的值的时间。

\\

最后,Elixir 1.7还提供了文档注解作为文档元数据,如下所示:

\\
\@moduledoc \"A brand new module\"\@moduledoc authors: [\"Jane\

转载地址:http://pzhbo.baihongyu.com/

你可能感兴趣的文章
OC基础--OC中的类方法和对象方法
查看>>
ubuntu samba服务器多用户配置【转】
查看>>
母线的种类与作用是什么(转)
查看>>
【Xamarin 挖墙脚系列:IOS 开发界面的3种方式】
查看>>
Atitit.工作流系统的本质是dsl 图形化的dsl 4gl
查看>>
I.MX6 Android USB Touch eGTouchA.ini文件存放
查看>>
4-5-创建索引表-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版
查看>>
java 操作 RabbitMQ 发送、接受消息
查看>>
go run main.go undefined? golang main包那点事
查看>>
前端进阶(13) - 搭建自己的前端脚手架
查看>>
数据挖掘(二):认识数据
查看>>
从零开始写一个npm包,一键生成react组件(偷懒==提高效率)
查看>>
Golang中的路由
查看>>
【期末考试季】JAVA进阶复习提纲
查看>>
Volley(二)—— 基本Request对象 & RequestQueue&请求取消
查看>>
2017中国系统架构师大会“盛装”来袭
查看>>
Google插件switchysharp的用法
查看>>
中国最强的人工智能学术会议来了
查看>>
Metasploit的射频收发器功能 | Metasploit’s RF Transceiver Capabilities
查看>>
Osmocom-BB中cell_log的多种使用姿势
查看>>