【发布时间】:2011-12-23 10:15:12
【问题描述】:
鉴于下面的代码示例,在运行 Main::main 时,如果 eval 块失败,我会假设角色中的 'after' 块永远不会运行。但是,我正在调试一个间歇性且难以确定的错误,这表明情况并非如此。
有人能解释一下“扁平化”过程在这种情况下是如何工作的,以及是否有任何情况下 eval 会失败但 after 块会运行?
谢谢 乔什
package MyRole;
use Moose::Role;
after 'main' => sub {
#some code that depends on main executing
};
package Main;
use Moose;
with 'MyRole';
sub main {
eval {
#main work
};
if ($@) {
die 'what happens now?';
}
}
【问题讨论】: