8

有没有比以下更简洁的方法来将抛出的异常提升为失败?

try {
    die 'always';
    CATCH { default { fail $_ } }
}
4

3 回答 3

6
try something();
fail $! if $!;

请注意,CATCH块适用于同一范围内的所有语句,甚至适用于CATCH块之后的代码。因此,如果您想使用 CATCH 块,请注意保持范围较小。

于 2018-04-18T06:14:29.620 回答
6

这是 moritz 代码的更简洁版本。

(try something()) orelse fail $!;
于 2018-04-18T23:33:51.173 回答
5

try 块是多余的

die 'always';
CATCH { default { fail $_; } }

但我不担心保存键入的字符。您的意图清晰且可读性强。

以表达您的意图或可读性为代价保存键入的字符可能在 Perl 的遗产中占有一席之地,但这不是您希望自己进行维护编程的地方。

于 2018-04-18T02:44:52.730 回答