📜  elixir 得到错误信息 - Elixir (1)

📅  最后修改于: 2023-12-03 14:40:58.070000             🧑  作者: Mango

Elixir 得到错误信息

当在 Elixir 中编写代码时,可能会遇到各种错误。理解错误是解决问题的第一步。在本文中,我们将介绍如何得到 Elixir 中的错误信息。

常见的 Elixir 错误

在 Elixir 中,常见的错误包括语法错误,运行时错误,警告和编译错误。

语法错误

语法错误是在编译时发现的错误。这些错误通常由于拼写错误、缺失的括号或语句中缺少的逗号等造成。

运行时错误

运行时错误是在程序运行时发现的错误。这些错误通常由于无效的参数、类型不匹配、访问 null 引用、除零错误等造成。

警告

警告不会导致程序崩溃,但它们可能会指示潜在的问题。例如,编译器可能会警告您未使用的变量或未定义的函数。

编译错误

编译错误是在编译时发生的错误,通常由于源代码中的语法错误或模块中的错误。

从错误信息中获取信息

当在 Elixir 中遇到错误时,错误信息可能会给出有用的线索,帮助您找到并解决问题。错误信息通常包括以下信息:

  • 错误类别:例如,语法错误或运行时错误。
  • 错误位置:发生错误的文件和行号。
  • 错误消息:描述错误的消息。
  • 追踪信息:在哪里调用了触发错误的函数。

以下是一个示例错误信息:

** (MatchError) no match of right hand side value: 10
    (my_app) lib/my_module.ex:5: MyModule.my_function/1

在此错误消息中,我们可以看到:

  • 错误类别是 MatchError。
  • 错误位置是 my_app 中的 my_module.ex 文件的第 5 行。
  • 错误消息是“no match of right hand side value: 10”。
  • 追踪信息告诉我们在 MyModule.my_function/1 中出错了。
更多方式获得错误信息

除了在错误消息中获取有用的信息之外,Elixir 中还有许多其他方式可以帮助我们诊断问题。

IEx

在编写代码时,可以使用 IEx(Interactive Elixir)来测试代码。当在 IEx 中运行时,如果代码出现错误,则可以在错误消息中查找有关出错行号以及调用堆栈的信息。

要启动 IEx,请在终端中运行 elixir 命令,然后在 IEx 提示符下输入代码:

$ iex

iex> 1 + "2"
** (ArithmeticError) bad argument in arithmetic expression
    (stdlib) :erlang.+("2", 1)
    (stdlib) erl_eval.erl:304: :erl_eval.expr/5
    (iex) lib/iex/evaluator.ex:252: IEx.Evaluator.handle_eval/5
码```

在此示例中,我们可以看到运行时错误 Message 缺少了 stack trace 信息。

### Logger

Logger 用于在代码中记录消息。当出现某些错误时,将自动在日志文件中记录有关错误的信息。

在 Elixir 中,可以使用以下代码记录消息:

```elixir
Logger.error("Something went wrong")

在您的应用程序中,EasyLogging 库可以很好的log记录,这将为您提供更详细的错误消息。更多信息请查阅 Elixir EasyLogging

结论

在 Elixir 中,理解错误消息是解决问题的关键。错误消息包括有关错误的有用信息,例如位置、错误消息和追踪信息。通过使用 IEx 和 Logger 等工具,我们可以更轻松地找到和解决问题。