[SP-pm] [Announce]: Net::Squid::Auth::Engine & Net::Squid::Auth::Plugin::UserLis
Luis Motta Campos
luismottacampos em yahoo.co.uk
Quarta Junho 11 05:33:06 PDT 2008
André Garcia Carneiro wrote:
> Luis Motta Campos wrote:
>> O problema é que numa base de dados representada por um tied-hash,
>> falhas na base vão causar erros de leitura.
>>
>> Quer dizer, isso:
>>
>> $value = $database_hash{'key'};
>>
>> pode falhar, e deveria estar dentro de um eval():
>>
>> $value = eval { $database_hash{'key'}; };
>> die $@ if $@;
>>
>> a mesma coisa pode acontecer com uma atribuição:
>>
>> $database_hash{'key'} = $value;
>>
>> que também deveria estar dentro de um eval():
>>
>> eval { $database_hash{'key'} = $value; };
>> die $@ if $@;
>>
>> Nem tão óbvio ou fácil de manter, mas eu sou ranzinza. ;)
>>
>
> Não rola fazer isso?
> <code>
> use strict;
> use Error;
> my $value = undef.;
>
> try{
> $value = $database_hash{'key'};
> }
> catch MinhaClasseTratError with {
> my $exception = shift;
> #trate sua exceção aqui
> };
>
> package MinhaClasseTratError;
> #Metodos aqui...
>
> </code>
>
> ou mesmo
>
> <code>
> use strict;
> use Error;
>
> my $value = undef;
> eval{ $value = $database_hash{'key'};
> throw MinhaClasseTratError -text =>'mensagem aqui' if $@;
>
> package MinhaClasseTratError;
> #Metodos aqui...
>
> </code>
É exatamente isso que eu estou argumentando: não gosto, não acho óbvio,
parece magia negra, e ninguém vai levar à sério que uma atribuição à um
hash pode falhar. Vai terminar mal-mantido, com muitos problemas e falta
de tratamento de erros.
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão SaoPaulo-pm