【发布时间】:2018-11-24 16:50:52
【问题描述】:
在 Elixir 中评估引用的块时,是否可以获得完整的堆栈跟踪或查看在哪一行抛出错误?
例如我有这个模块:
defmodule Test do
def trySomeQuotedCode() do
quote do
IO.puts "line 1"
IO.puts "line 2"
5/0
end
|> evalMyQuoted
end
def evalMyQuoted(quoted) do
Code.eval_quoted(quoted)
end
end
但如果你执行它,你会看到:
它显示有一个ArithmeticError 和:erlang./(5, 0),这是正确的,但它没有显示引用代码中的位置。通过这个小例子,仍然很容易找到代码中的错误所在,但是如果引用的代码更大或更高级,它可能就不是那么简单了。
那么,对于这个例子,是否有可能让堆栈跟踪说错误出现在 "line 3" 的引用部分的评估中?或者也许从Code.eval_quoted 获取行号作为返回值?
【问题讨论】:
标签: elixir stack-trace