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