[SP-pm] Try::Tiny : uma opção de exception, mas nem tanto !!!

Daniel Mantovani daniel.oliveira.mantovani at gmail.com
Thu Jun 21 09:59:18 PDT 2012


Shonorio,

Eu te recomendo usar MooseX::Method::Signatures[1] para validar os argumentos dos seus métodos, por uma questão de design.

[1] - https://metacpan.org/module/MooseX::Method::Signatures

-- 
Software Engineer
Just Another Perl Hacker
Daniel Mantovani +5511 8538-9897
XOXO

On Jun 21, 2012, at 1:43 PM, Solli Honorio wrote:

> Pessoal,
> 
> Este é apenas um compartilhamento de experiência que pode ser útil aos demais, sobre a minha frustação do perl não ter um try-catch de leitura simples e nativo. 
> 
> Tenho observado que o Try::Tiny está sendo utilizado em vários módulos sérios e com grande utilização, em substituição ao eval{ ... } (já que apenas os letrados em perl entende isto).
> 
> As coisas estavam encaminhando bem, até que eu resolvi 'melhorar o meu código' e passei a ter uma coisa do tipo : 
> 
> <code>
> use Try::Tiny;
> use Params::Validate qw(:all);
> 
> sub foo {
>   my $self  = shift;
>   my $param = try { validate(@_, { name => { SCALAR } } ) } catch { ... };
> 
>     ...
> 
> }
> </code>
> 
> E aí todos os meus teste falharam, depois de algumas análise descobri (sem muita surpresa) que o try { } localiza o @_ (claro, isto é um função qualquer) e  com valor inválido. Este problema eu não tenho com o eval { }. 
> 
> Bom, eu ainda vou continuar a utilizar o Try::Tiny, por enquanto, mas é neste momento que a gente percebe que estes 'quebra-galho' no perl é chato !
> 
> Solli Honorio
> 
> 
> -- 
> "o animal satisfeito dorme". - Guimarães Rosa
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer

-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120621/448e60c7/attachment.html>


More information about the SaoPaulo-pm mailing list