简洁的方法将抛出异常改为失败?

时间:2018-04-18 02:11:19

标签: error-handling exception-handling try-catch perl6 rakudo

是否有更简洁的方法将抛出的异常提升为失败而不是以下?

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:6)

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

(try something()) orelse fail $!;

答案 2 :(得分:5)

try块是多余的

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

但我不担心保存打字字符。您的意图清晰且具有高度可读性。

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