[SP-pm] problemas com tratamento de exceções
André Garcia Carneiro
andre.garcia.carneir em terra.com.br
Terça Dezembro 18 06:08:23 PST 2007
Salve Monges!
Estou usando o módulo 'Error' para fazer tratamento de exceções, mas estou tendo problemas. Primeiramente vamos
a idéia da 'coisa'.
Eu tenho um módulo q se chama Spawn. Dentro dele eu faço:
.
.
.
use Error qw(:try);
use Microspider::Exceptions::Spawn;
<codigo>
try{
mais codigo
}
catch Microspider::Exceptions::Spawn::loadSpawnArq with {
my $ex = shift;
print $ex->stringify;
};
</codigo>
Existe um diretório Exceptions e um arquivo Spawn.pm. Dentro desse arquivo existe a package
Microspider::Exceptions::Spawn::loadSpawnArq. No entanto, perl me retorna a seguinte mensagem:
'cant locate object method "catch" via package "Microspider::Exceptions::Spawn::loadSpawnArq" (perhaps you
forgot to load "Microspider::Exceptions::Spawn::loadSpawnArq" ?) at Microspider::Spawn line 241.
Se eu estou fazendo use em Microspider::Exceptions::Spawn, e a package está lá dentro, deveria carregar, ou não?
O arquivo Microspider::Exceptions::Spawn tem o seguinte:
<code>
package Spawn;
use base qw( Error );
sub load {
# use Microspider::Exceptions::Spawn::CreateProcess;
# use Microspider::Exceptions::Spawn::loadSpawnArqs;
}
sub stringify{
my ($self) = @_;
return "\nERROR <coderr>: ERRO geral em Spawn.pm - $@ - na linha ".$self->{-line};
}
# package Microspider::Exceptions::Spawn::CreateProcess;
# use base qw( Error );
# sub stringify{
# my ($self) = @_;
# return "\nERROR <coderr>: Não foi possível criar o spawn -".$self->{-text}.' - na linha '.$self->{-line};
# }
package Microspider::Exceptions::Spawn::loadSpawnArq;
use base qw( Error );
sub stringify{
my ($self) = @_;
return "\nERROR <coderr>: Não foi possível abrir o arquivo '".$self->{-errortarget}."' - ".$self->{-text}.' -
na linha: '.$self->{-line};
}
1;
</code>
Eu achei até que deveria ser algum problema com 'use lib', mas não deu certo. Até tentei mudar o nome de Spawn
para Microspider::Exceptions::Spawn, mas o resultado é sempre o mesmo.
O pior é que eu fiz um script de teste, que simplesmente carregava as exceções em um diretório, de maneira
quase idêntica e funcionou, mas não consigo reproduzir nessa situação em que demonstrei. Se alguém tiver alguma
idéia, ou sugestão de leitura por favor postem.
Cheers!
--
André Garcia Carneiro
Developer(Perl/PHP)
Member of "São Paulo Perl Mongers" - http://sao-paulo.pm.org
Mais detalhes sobre a lista de discussão SaoPaulo-pm