2008/8/6 Matías Palomec <[EMAIL PROTECTED]>:
> Hola:
>
> Hace unos días que estoy teniendo un problema raro con el rescue y no
> logro entenderlo (he leido documentación al respecto, pero no veo que
> reaccione como yo quiero/necesito).
>
> La salida que obtengo es:
>
> /var/lib/gems/1.8/gems/tsm-command-1.2/lib/tsm/dsmadmc.rb:89: warning:
> instance variable @pty not initialized
> /var/lib/gems/1.8/gems/tsm-command-1.2/lib/tsm/dsmadmc.rb:89: warning:
> instance variable @pty not initialized
> /var/lib/gems/1.8/gems/tsm-command-1.2/lib/tsm/dsmadmc.rb:59:in
> `open': TSM::Error::FatalError (TSM::Error::FatalError)
>        from /var/lib/gems/1.8/gems/tsm-command-1.2/lib/tsm/dsmadmc.rb:56:in 
> `spawn'
>        from /var/lib/gems/1.8/gems/tsm-command-1.2/lib/tsm/dsmadmc.rb:56:in 
> `open'
>        from /var/lib/gems/1.8/gems/tsm-command-1.2/lib/tsm/dsmadmc.rb:103:in 
> `command'
>        from ./lib/movedata.rb:199:in `GetInfo'
>        from ./lib/movedata.rb:189:in `GetStructure'
>        from test_structure_create.rb:58
>        from test_structure_create.rb:27:in `each'
>        from test_structure_create.rb:27
>        from test_structure_create.rb:24:in `each_pair'
>        from test_structure_create.rb:24
>
> El programa es largo (tengo que hacer muchas validaciones de texto y
> transformar cosas de TSM a MySQL).
>
> Puntualmente necesito poder tomar el TSM::Error::FatalError (que es un
> simple timeout). El problema que puedo tener (no vi documentación que
> lo mensione) es que estoy haciendo el rescue desde un archivo de
> ejecución, dentro de una librería local mia, que a su vez está dentro
> de una librería de GEM de Ruby.
>
> He probado con las combinaciones básicas:
> rescue TSM::Error::FatalError
> rescue FatalError
> rescue TSM::Error
> rescue
>
> (el último es a secas). Pero de todas formas el código que está dentro
> del rescue nunca se ejecuta.
>
> ¿Alguien tiene una idea de que puedo leer para resolver esto?
>

Podrias mostrarnos la linea de codigo antes y despues de la llamada a
GetInfo en movedata.rb ?

para poder usar rescue necesita un contexto o bloque que rescatar.

podes hacer en un metodo:

def foo
  # algo aqui que puede romper todo
rescue
  # aqui arreglo el problema
end

Cuando estas dentro de un metodo y solamente queres rescatar una
excepcion en particular, tenes:

def foo
  # mi codigo ...
  begin
    # algo que hace raise
  rescue
    # aqui atrapo todo
  end
  # ...
end

Podes ser mas especifico y solo hacer rescue de las excepciones que queres:

rescue TSM::Error => e

Pero sin ver puntualmente esa porcion de codigo, mas de mi parte no te
podria decir.

Saludos y espero sirva de algo,
-- 
Luis Lavena
AREA 17
-
Human beings, who are almost unique in having the ability to learn from
the experience of others, are also remarkable for their apparent
disinclination to do so.
Douglas Adams
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a