在异常中§

有关例程 die,请参阅主要文档 上下文

multi  die()
multi  die(*@message)
multi  die(Exception:D $e)
method die(Exception:D:)

抛出一个致命的Exception。默认异常处理程序将列表的每个元素打印到 $*ERR(STDERR)。

die "Important reason";

如果未带参数调用子例程形式,则检查 $! 变量 的值。如果将其设置为 .DEFINITE 值,则其值将用作要抛出的 Exception(如果它是 Exception 类型),否则,它将用作 X::AdHoc 异常的有效负载。如果 $! 不是 .DEFINITE,则将抛出有效负载为字符串 "Died"X::AdHoc

die 默认情况下会打印发生该异常的行号

die "Dead";
# OUTPUT: «(exit code 1) Dead␤ 
# in block <unit> at /tmp/dead.raku line 1␤␤» 

但是,该默认行为受 Exception 级别控制,因此可以通过使用 CATCH 捕获异常来将其更改为我们想要的任何内容。例如,这可用于抑制行号。

CATCH {
  default {
    .payload.say
  }
};
die "Dead" # OUTPUT: «Dead␤»