J H*_*all 8 error-handling exception-handling try-catch rakudo perl6
是否有更简洁的方法将抛出的异常提升为失败而不是以下?
try {
die 'always';
CATCH { default { fail $_ } }
}
Run Code Online (Sandbox Code Playgroud)
try something();
fail $! if $!;
Run Code Online (Sandbox Code Playgroud)
请注意,CATCH
块适用于同一范围内的所有语句,甚至适用于CATCH
块之后的代码.因此,如果您想使用CATCH块,请注意保持范围较小.
这是一个更简洁的moritz代码版本.
(try something()) orelse fail $!;
Run Code Online (Sandbox Code Playgroud)
try块是多余的
die 'always';
CATCH { default { fail $_; } }
Run Code Online (Sandbox Code Playgroud)
但我不担心保存打字的字符.您的意图清晰且具有高度可读性.
以表达您的意图或可读性为代价来保存键入的字符可能在Perl的遗产中占有一席之地,但它不是您希望自己进行维护编程的地方.