Perl6:我怎样才能使所有警告都致命?
Perl6: How could I make all warnings fatal?
我怎样才能使 Perl6 中的所有警告都致命,以便脚本在屏幕上出现警告时立即终止。
CONTROL { when CX::Warn { note $_; exit 1 } }
死得更频繁。
这个脚本死于 CONTROL { when CX::Warn { note $_; exit 1 } }
但没有死于 use fatal
:
#!/usr/bin/env perl6
use v6;
my @a = 1 .. 4;
@a[5] = 6;
my @b;
for @a -> $i {
@b.push( ~$i );
}
say "=====\n" x 3;
您可以使用 'use fatal' 使所有异常立即致命。例如,此代码在您尝试从 $file 中读取之前不会抛出错误,因此它将到达 'say' 行。如果取消注释 'use fatal',它会在 'open' 语句处立即死亡,而不会到达 'say' 行。
有关更多 fine-grained 控制,请参阅 try/CATCH 系统以了解例外情况。
# use fatal;
my $file = open 'nonexistent', :r;
say 'Reached here';
my @lines = $file.IO.lines;
警告是 CX::Warn
类型的控制异常,默认情况下会恢复。如果你想改变这种行为,你需要添加一个 CONTROL
块,在你的情况下是这样的:
CONTROL {
when CX::Warn {
note $_;
exit 1;
}
}
忽略所有警告而不是将它们设为致命警告如下所示:
CONTROL {
when CX::Warn { .resume }
}
我怎样才能使 Perl6 中的所有警告都致命,以便脚本在屏幕上出现警告时立即终止。
CONTROL { when CX::Warn { note $_; exit 1 } }
死得更频繁。
这个脚本死于 CONTROL { when CX::Warn { note $_; exit 1 } }
但没有死于 use fatal
:
#!/usr/bin/env perl6
use v6;
my @a = 1 .. 4;
@a[5] = 6;
my @b;
for @a -> $i {
@b.push( ~$i );
}
say "=====\n" x 3;
您可以使用 'use fatal' 使所有异常立即致命。例如,此代码在您尝试从 $file 中读取之前不会抛出错误,因此它将到达 'say' 行。如果取消注释 'use fatal',它会在 'open' 语句处立即死亡,而不会到达 'say' 行。
有关更多 fine-grained 控制,请参阅 try/CATCH 系统以了解例外情况。
# use fatal;
my $file = open 'nonexistent', :r;
say 'Reached here';
my @lines = $file.IO.lines;
警告是 CX::Warn
类型的控制异常,默认情况下会恢复。如果你想改变这种行为,你需要添加一个 CONTROL
块,在你的情况下是这样的:
CONTROL {
when CX::Warn {
note $_;
exit 1;
}
}
忽略所有警告而不是将它们设为致命警告如下所示:
CONTROL {
when CX::Warn { .resume }
}