Até há relativamente pouco tempo, a falta de tratamento adequado de erros e excepções era uma razão para muitos programadores
Perl o abandonarem noutras direcções. Na verdade, não é simpático que determinado código ao falhar retorne apenas um valor indefenido (
undef) sem indicar claramente qual o erro ocorrido.
Desde 2009 (pelo menos), que está disponível um pequeno módulo, chamado
Try::Tiny, que torna muito simples a implementação de código com excepções. Simples, e intuitiva.
Então, qual a filosofia? Quando determinada função ou bloco de código falha deve invocar a função
die com a mensagem de erro em causa. Este
die vai ser entendido pelo
Try::Tiny como o levantamento da excepção, e que poderá ser apanhado com um bloco try, como vamos ver no exemplo abaixo.
Considerem uma função que realiza uma divisão de dois valores:
sub divide {
my ($dividendo, $divisor) = @
;
if ($divisor == 0) {
die "Erro! Divisão por zero!";
} else {
return $dividendo / $divisor;
}
}
Quando o divisor for o valor zero um erro é despoletado. Sem o uso do Try::Tiny o código apresentado iria abordar todas as execuções em que se tentase realizar a divisão por zero. Mas, com este módulo, podemos apanhar essa excepção:
use Try::Tiny;
try {
my $resultado = divide(10, 0);
print "O resultado da divisão é: $resultado";
} catch {
print "Ocorreu um erro: $";
};
Este módulo permite mais algumas brincadeiras que veremos num post seguinte.