Elixir 1.7致力于提升开发者体验,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 Logger模块现在插入了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的单元测试库ExUnit也经过了改进,宏assert返回的信息更详细了。例如,如果assert some_function(expr1, var2)语句失败,它就会打印出some_function的参数值,这样,就可以为开发人员节省下重新运行测试来查看它们的值的时间。

\\

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

\\

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

Elixir 1.7改进错误处理、日志和测试相关推荐

  1. 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题...

    背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视. 所以在我们前端开发完成后,会有一些列的web应用的上线验证,如自测.QA测试.code review 等 ...

  2. mysql error trace_防止DedeCMS错误警告日志data/mysql_error_trace.inc暴露后台管

    防止DedeCMS错误警告日志data/mysql_error_trace.inc暴露后台管理地址,请使用FTP或远程登陆服务器下载或打开你网站下的 data/mysql_error_trace.in ...

  3. 错误的日志可能会导致疯狂;好日志可能会成为魔杖

    目录 介绍 假设条件 规则 结论 介绍 在本文中,我想分享一下我个人写日志的经验.错误的日志可能会使人发疯.好的日志可能成为魔杖.在我的职业生涯中,我写了一些日志,并得出了自己的经验法则.我不能说我的 ...

  4. 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题

    基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题 背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视 ...

  5. Artisan、文件上传、缓存使用、错误和日志

    Artisan artisan是laravel中自带的命令行工具的名称 由强大的Symfony Console组件驱动的 提供了一些对应用开发有帮助的命令 查看所有可用的Artisan的命令(list ...

  6. 如何linux查看mysql目录下日志_测试人员如何在linux服务器中查询mysql日志?

    测试工程师在测试软件的过程中,流程往往是先接口测试,接着就是功能性测试.在做功能性测试的时候,往往有这么一个工作场景,就是出现错误后,我们怎么快速排除数据库报错. 举例某个电商网站,当我们文本框中输入 ...

  7. cfree运行程序错误的原因_Python入门教程 | 第 8 章 错误、调试和测试

    第八章 错误.调试和测试 在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的. 有的错误 ...

  8. 代码的“行车记录仪”,如何借助日志做测试?

    [内部资源] 想拿年薪30W+的软件测试人员,这份资料必须领取~ Python自动化测试全栈+性能测试全栈,挑战年薪40W+ 后疫情时代,已经不对感染人群做分析了,那过去我们是如何追踪的?依靠链路追踪 ...

  9. gdb 编译make: *** [all] 错误 2_Dev 日志 | Segmentation Fault 和 GCC 编译问题排查

    摘要 笔者最近在重新整理和编译 Nebula Graph 的第三方依赖,选出两个比较有意思的问题给大家分享一下. Flex Segmentation Fault--Segmentation fault ...

最新文章

  1. java card applet_可多选的javacard applet | 学步园
  2. Ubuntu搭建Spark运行环境
  3. C++学习札记(2011-09-30)
  4. springmvc获取url对应的controller,并拦截记录每次访问的controller方法
  5. js校验明细列表字段是否存在相同值(js循环嵌套初始值问题)
  6. 牛批!妹子一口气拿下BAT、美团、vivo、爱奇艺等公司Offer面经总结
  7. php 替换数字和字母,php preg_替换非字母数字字符并选择连词,然后拆分
  8. 录制GIF动画 MAC
  9. ansible ---- 主机文件编写--在运行时显示自定义主机名称
  10. 数据挖掘导论实验报告01
  11. Android中JNI开发之常见错误
  12. 电子发票税费计算问题
  13. 通达信股票接口委托成功原理是什么?
  14. 进入网页页面的开发者模式——三种方式
  15. STM32实战六 PWM加移相正交
  16. 流利阅读12.27 Why life expectancy in America is down again
  17. Meth | Git 避免重复输入用户名和密码方法
  18. ACM学习历程—BestCoder 2015百度之星资格赛1002 列变位法解密(vector容器)
  19. imx6q项目:使用psplash制作开机动画
  20. 基于token的身份验证

热门文章

  1. python 导入的nan怎么解决_用Python处理了数据还要导入Excel做图表?直接Python做漂亮图表...
  2. centos怎么编写java_编写的java程序在centos后台运行的方法
  3. java quartz实例_一个非常简单的quartz例子
  4. checkout 撤销修改_撤销修改(第8篇)
  5. 20190809:旋转数组
  6. sqlserverv中处理字符串包含、截取
  7. jediscluster的maxAttempts的理解
  8. 嵌入式编程(一):51单片机如何将函数 定义到指定程序地址
  9. Spring Boot实战解决高并发数据入库: Redis 缓存+MySQL 批量入库
  10. SCPPO(六):源代码管理工具---Team Foundation Server