[Cascavel-pm] Tratamento de erro

Luis Campos de Carvalho lechamps em terra.com.br
Quarta Junho 2 10:34:57 CDT 2004


----- Original Message -----
From: "Luiz Gonzaga" <lgonzaga em lncc.br>
To: <cascavel-pm em mail.pm.org>
Sent: Wednesday, June 02, 2004 12:23 PM
Subject: [Cascavel-pm] Tratamento de erro


> Pessoal,
>
> Desculpem-me mandar uma duvida sem consultar antes a documentacao etc.
> Mas estou com muita pressa, e preciso da ajuda de voces. Enquanto isto
> consultarei o "man" e se encontrar a solucao aviso.
>
> A questao e a seguinte, faco uma chamada a um metodo do objeto "$ca" e
> para uma determinado valor recebo uma mensagem de erro que nao posso
> chamar o metodo para um valor indefinido. Acho que o problema esta no
> modulo que estou usando (Bio::Assembly::ContigAnalysis). O que eu preciso
> eh saber como tratar este erro sem que o meu script
> (LoadProblemsFinish.pl) seja interrompido.
>
> O codigo "enxugado" eh este:
> foreach $contig ($assembly->all_contigs)
>   {
>      $ca = Bio::Assembly::ContigAnalysis->new(-contig=>$contig);
>      @ncbs  = $ca->not_confirmed_on_both_strands;
>      #executo outros comandos a partir do conteudo de @ncbs
>   }
>

  Prezado Luiz

  Seu problema é que a variável $ca não tem valor definido ( quer dizer que
"defined $ca" retorna falso).

  Para resolver este problema, você pode fazer assim:

 foreach $contig ($assembly->all_contigs)
   {
      $ca = Bio::Assembly::ContigAnalysis->new(-contig=>$contig);
      if( UNIVERSAL::isa( $ca, 'Bio::Assembly::ContigAnalysis' ){
        @ncbs  = $ca->not_confirmed_on_both_strands;
        #executo outros comandos a partir do conteudo de @ncbs
      }else{
        # Erro!!
      }
   }

  Ou assim:
 foreach $contig ($assembly->all_contigs)
   {
      $ca = Bio::Assembly::ContigAnalysis->new(-contig=>$contig);
      eval{ @ncbs  = $ca->not_confirmed_on_both_strands; }
      die "Erro: $!\n" if $@; # Tratamento do erro capturado no "eval" acima
      #executo outros comandos a partir do conteudo de @ncbs
   }

  Se isso não resolver, por favor me informe, pela lista. Mais gente pode
dar idéias melhores.

  Putamplexos!
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  Luis Campos de Carvalho
  Computer Scientist
  OCP DBA Oracle & Senior Unix Sys Admin
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=




Mais detalhes sobre a lista de discussão Cascavel-pm