创建你自己的错误

使用 元数据 信息,你可以创建自己的自定义错误,错误信息由多个部分构成:

  • 错误的标题
  • 错误信息的标签,其中包括标签的文本和要标注下划线的范围

你可以使用error make命令来创建你自己的错误信息。例如,假设你有自己的名为my-command的命令,你想给调用者一个错误信息,说明传入的一个参数有问题。

首先,你可以从参数的来源中获取标注范围:

  1. let span = (metadata $x).span;

接下来你可以通过 error make 命令来创建一个错误,该命令需要一个可以描述待创建错误的记录作为输入:

  1. error make {msg: "this is fishy", label: {text: "fish right here", start: $span.start, end: $span.end } }

与你的自定义命令放在一起后,它可能看起来像这样:

  1. def my-command [x] {
  2. let span = (metadata $x).span;
  3. error make {
  4. msg: "this is fishy",
  5. label: {
  6. text: "fish right here",
  7. start: $span.start,
  8. end: $span.end
  9. }
  10. }
  11. }

现在当传入一个值调用时,我们会看到一个错误信息返回:

  1. > my-command 100
  2. Error:
  3. × this is fishy
  4. ╭─[entry #5:1:1]
  5. 1 my-command 100
  6. · ─┬─
  7. · ╰── fish right here
  8. ╰────