[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