try { ... } catch { ... };
действительно
try(sub { ... }, catch(sub { ... }));
Возврат из подпрограммы, которая вызывается при обнаружении исключения, возвращается из этого подпрограммы, а не из подпрограммы, в которой находится try
.
Вы можете использовать
try {
my $query = "select myvalue from mytable";
$sth = $dbh->prepare($query);
$sth->execute();
$self->{CODE} = 50;
} catch {
$self->{CODE} = 100;
};
Или, может быть, вам нужно что-то более похожее на
my $success = try {
my $query = "select myvalue from mytable";
$sth = $dbh->prepare($query);
$sth->execute();
return 1;
} catch {
return 0;
};
... do stuff ...
$self->{CODE} = $succes ? 50 : 100;