Elixir 1.7改进错误处理、日志和测试
Elixir 1.7致力于提升开发者体验,Elixir创建者José Valim这样写道。其中包括新增__STACKTRACE__
结构检索堆栈踪迹,集成Erlang新增的:logger
模块,改进Elixir的单元测试库ExUnit,支持文档元数据。
\\
Elixir 1.7改进了异常系统,ArgumentError
、ArithmeticError
和KeyError
异常提供了更多的诊断信息,并且新增一个__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
宏如debug
、info
等就不会对它们的参数求值,新增的: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改进错误处理、日志和测试相关推荐
- 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题...
背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视. 所以在我们前端开发完成后,会有一些列的web应用的上线验证,如自测.QA测试.code review 等 ...
- mysql error trace_防止DedeCMS错误警告日志data/mysql_error_trace.inc暴露后台管
防止DedeCMS错误警告日志data/mysql_error_trace.inc暴露后台管理地址,请使用FTP或远程登陆服务器下载或打开你网站下的 data/mysql_error_trace.in ...
- 错误的日志可能会导致疯狂;好日志可能会成为魔杖
目录 介绍 假设条件 规则 结论 介绍 在本文中,我想分享一下我个人写日志的经验.错误的日志可能会使人发疯.好的日志可能成为魔杖.在我的职业生涯中,我写了一些日志,并得出了自己的经验法则.我不能说我的 ...
- 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题
基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题 背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视 ...
- Artisan、文件上传、缓存使用、错误和日志
Artisan artisan是laravel中自带的命令行工具的名称 由强大的Symfony Console组件驱动的 提供了一些对应用开发有帮助的命令 查看所有可用的Artisan的命令(list ...
- 如何linux查看mysql目录下日志_测试人员如何在linux服务器中查询mysql日志?
测试工程师在测试软件的过程中,流程往往是先接口测试,接着就是功能性测试.在做功能性测试的时候,往往有这么一个工作场景,就是出现错误后,我们怎么快速排除数据库报错. 举例某个电商网站,当我们文本框中输入 ...
- cfree运行程序错误的原因_Python入门教程 | 第 8 章 错误、调试和测试
第八章 错误.调试和测试 在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的. 有的错误 ...
- 代码的“行车记录仪”,如何借助日志做测试?
[内部资源] 想拿年薪30W+的软件测试人员,这份资料必须领取~ Python自动化测试全栈+性能测试全栈,挑战年薪40W+ 后疫情时代,已经不对感染人群做分析了,那过去我们是如何追踪的?依靠链路追踪 ...
- gdb 编译make: *** [all] 错误 2_Dev 日志 | Segmentation Fault 和 GCC 编译问题排查
摘要 笔者最近在重新整理和编译 Nebula Graph 的第三方依赖,选出两个比较有意思的问题给大家分享一下. Flex Segmentation Fault--Segmentation fault ...
最新文章
- java card applet_可多选的javacard applet | 学步园
- Ubuntu搭建Spark运行环境
- C++学习札记(2011-09-30)
- springmvc获取url对应的controller,并拦截记录每次访问的controller方法
- js校验明细列表字段是否存在相同值(js循环嵌套初始值问题)
- 牛批!妹子一口气拿下BAT、美团、vivo、爱奇艺等公司Offer面经总结
- php 替换数字和字母,php preg_替换非字母数字字符并选择连词,然后拆分
- 录制GIF动画 MAC
- ansible ---- 主机文件编写--在运行时显示自定义主机名称
- 数据挖掘导论实验报告01
- Android中JNI开发之常见错误
- 电子发票税费计算问题
- 通达信股票接口委托成功原理是什么?
- 进入网页页面的开发者模式——三种方式
- STM32实战六 PWM加移相正交
- 流利阅读12.27 Why life expectancy in America is down again
- Meth | Git 避免重复输入用户名和密码方法
- ACM学习历程—BestCoder 2015百度之星资格赛1002 列变位法解密(vector容器)
- imx6q项目:使用psplash制作开机动画
- 基于token的身份验证
热门文章
- python 导入的nan怎么解决_用Python处理了数据还要导入Excel做图表?直接Python做漂亮图表...
- centos怎么编写java_编写的java程序在centos后台运行的方法
- java quartz实例_一个非常简单的quartz例子
- checkout 撤销修改_撤销修改(第8篇)
- 20190809:旋转数组
- sqlserverv中处理字符串包含、截取
- jediscluster的maxAttempts的理解
- 嵌入式编程(一):51单片机如何将函数 定义到指定程序地址
- Spring Boot实战解决高并发数据入库: Redis 缓存+MySQL 批量入库
- SCPPO(六):源代码管理工具---Team Foundation Server