給出下面的代碼示例,當運行Main :: main時,如果eval塊失敗,我會假設角色中的'after'塊永遠不會運行。但是,我正在調試一個間歇性的,難以糾正的錯誤,這表明事實並非如此。Moose角色修飾符函數的失敗行爲
有人可以解釋'扁平化'過程如何在這種情況下工作,並且如果有任何條件,eval會失敗,但後面的塊會運行?
感謝 喬希
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 ([email protected]) {
die 'what happens now?';
}
}