Учитывая приведенный ниже пример кода, при запуске 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?';
}
}