# Rescue warning

**URL:** <https://www.ruby-forum.com/t/rescue-warning/180861>\
**Category:** IT\
**Created:** [December 30, 2009, 4:33pm UTC](https://www.ruby-forum.com/t/rescue-warning/180861 "2009-12-30T16:33:47Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![al\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f08c70/32.png) [@al\_S](https://www.ruby-forum.com/u/al_S)\
**Post date:** [December 30, 2009, 4:33pm UTC](https://www.ruby-forum.com/t/rescue-warning/180861/1 "2009-12-30T16:33:47Z")

</div>

Salve forum,

Ã¨ possibile creare un’eccezione per un warning? Cerco di spiegarmi  
meglio: utilizzo un modulo che in alcuni casi rari e particolari  
(diciamo non RFC compliant) mi blocca l’esecuzione di uno script  
restituendo:

# ./lib/modulo/mod.rb:123: warning: etc. etc.

Ho provato invano ad utilizzare qualcosa come “rescue warning”, ma a  
quanto pare rescue si utilizza solo per sollevare eccezioni riguardanti  
gli errori.

Non avendo la possibilitÃ di modificare il modulo, come potrei fare? So  
che la mia richiesta Ã¨ un po’ generica, ma se avete qualche suggerimento  
ve ne sarei grato.

Colgo l’occasione per farvi gli Auguri di un Felice Anno nuovo!

---

<div class="post-metadata">

**Author:** ![al\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f08c70/32.png) [@al\_S](https://www.ruby-forum.com/u/al_S)\
**Post date:** [December 30, 2009, 4:40pm UTC](https://www.ruby-forum.com/t/rescue-warning/180861/2 "2009-12-30T16:40:16Z")

</div>

2009/12/30 Alfonso C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Salve forum,
> 
> è possibile creare un’eccezione per un warning? Cerco di spiegarmi  
> meglio: utilizzo un modulo che in alcuni casi rari e particolari  
> (diciamo non RFC compliant) mi blocca l’esecuzione di uno script  
> restituendo:  
> …  
> Non avendo la possibilità di modificare il modulo, come potrei fare? So  
> che la mia richiesta è un po’ generica, ma se avete qualche suggerimento  
> ve ne sarei grato.

Che modulo e’? Puoi fare un esempio concreto?

ciao,  
Luca

---

<div class="post-metadata">

**Author:** ![al\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f08c70/32.png) [@al\_S](https://www.ruby-forum.com/u/al_S)\
**Post date:** [December 31, 2009, 10:31am UTC](https://www.ruby-forum.com/t/rescue-warning/180861/3 "2009-12-31T10:31:38Z")

</div>

Alfonso C. wrote:

> Salve forum,
> 
> Ã¨ possibile creare un’eccezione per un warning? Cerco di spiegarmi  
> meglio: utilizzo un modulo che in alcuni casi rari e particolari  
> (diciamo non RFC compliant) mi blocca l’esecuzione di uno script  
> restituendo:
> 
> # ./lib/modulo/mod.rb:123: warning: etc. etc.

Se Ã¨ un messaggio su standard output o standard error mi sa che quel che  
devi fare Ã¨ ridirigerlo in una pipe verso un programma che in risposta  
ai warning ti generi le eccezioni che poi gestirai. Non so quanto sia  
compatibile con l’architettura generale del tuo sistema, ma Ã¨ un’idea.  
Quel modulo Ã¨ closed source e non si puÃ² proprio toccare?

> Ho provato invano ad utilizzare qualcosa come “rescue warning”, ma a  
> quanto pare rescue si utilizza solo per sollevare eccezioni riguardanti  
> gli errori.

Cos’Ã¨ rescue warning?

> Non avendo la possibilitÃ di modificare il modulo, come potrei fare? So  
> che la mia richiesta Ã¨ un po’ generica, ma se avete qualche suggerimento  
> ve ne sarei grato.
> 
> Colgo l’occasione per farvi gli Auguri di un Felice Anno nuovo!

Grazie e buon 2010 anche a te!

Paolo

---

<div class="post-metadata">

**Author:** ![al\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f08c70/32.png) [@al\_S](https://www.ruby-forum.com/u/al_S)\
**Post date:** [December 30, 2009, 4:59pm UTC](https://www.ruby-forum.com/t/rescue-warning/180861/4 "2009-12-30T16:59:00Z")

</div>

Luca M. wrote:

> 2009/12/30 Alfonso C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > Salve forum,
> > 
> > ï¿½ possibile creare un’eccezione per un warning? Cerco di spiegarmi  
> > meglio: utilizzo un modulo che in alcuni casi rari e particolari  
> > (diciamo non RFC compliant) mi blocca l’esecuzione di uno script  
> > restituendo:  
> > …  
> > Non avendo la possibilitï¿½ di modificare il modulo, come potrei fare? So  
> > che la mia richiesta ï¿½ un po’ generica, ma se avete qualche suggerimento  
> > ve ne sarei grato.
> 
> Che modulo e’? Puoi fare un esempio concreto?
> 
> ciao,  
> Luca

Il modulo Ã¨ “snmp” ([http://snmplib.rubyforge.org/](http://snmplib.rubyforge.org/)). Il warning appare  
nel momento in cui si faccia una richiesta ‘walk’ verso alcuni apparati  
di rete che non implementano ‘get-next’ nel modo corretto/o standard.

snmp.walk([“1.3.6.1.2.1.25.4.2.1.2”]) do |name|  
…  
end

Non ho un sistema con IP pubblico da farvi provare. A prescindere  
dall’SNMP ecc. non vi viene in mente qualche workaround? 🙂 Per quel  
poco che conosco di Ruby, pensavo all’utilizzo di un’eccezione ☹

Grazie

---

<div class="post-metadata">

**Author:** ![al\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f08c70/32.png) [@al\_S](https://www.ruby-forum.com/u/al_S)\
**Post date:** [January 3, 2010, 12:10pm UTC](https://www.ruby-forum.com/t/rescue-warning/180861/5 "2010-01-03T12:10:41Z")

</div>

2010/1/3 Alfonso C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Il modulo è opensource, ma visto che viene utilizzato da altri script  
> preferivo non modificarlo.

puoi modificarlo nel tuo singolo programma facendo monkey patching,  
cioè ridefinendo quel pezzetto.

Se il warning ad esempio ti viene da un metodo #foo() nella class Bar  
del modulo Baz puoi ridefinirlo e cambiarlo nel tuo codice con

require ‘snmp’

# questo ridefinisce il metoto Baz::Bar#foo in questo script

module Baz  
class Bar  
def foo()  
#copincolla il codice originale e cambia quel che serve  
end  
end  
end

è una zozzeria ma se la libreria non è abbastanza modulare da  
lasciartelo fare in un modo più raffinato dovrebbe funzionare.

> > Cos’è rescue warning?  
> > Avendo poca esperienza con Ruby e con la programmazione in generale, sto  
> > provando di tutto, cercando di poter gestire un’eccezione per un  
> > warning. Fanta-programmazione 🙂

non troppo, in smalltalk (e in perl6 e in common lisp, IIRC) puoi  
davvero trattare i warning come exception  
[http://en.wikipedia.org/wiki/GNU\_Smalltalk#Exceptions](http://en.wikipedia.org/wiki/GNU_Smalltalk#Exceptions)

purtroppo in ruby no 🙂

---

<div class="post-metadata">

**Author:** ![al\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f08c70/32.png) [@al\_S](https://www.ruby-forum.com/u/al_S)\
**Post date:** [January 3, 2010, 12:20am UTC](https://www.ruby-forum.com/t/rescue-warning/180861/6 "2010-01-03T00:20:36Z")

</div>

> Se Ã¨ un messaggio su standard output o standard error mi sa che quel che  
> devi fare Ã¨ ridirigerlo in una pipe verso un programma che in risposta  
> ai warning ti generi le eccezioni che poi gestirai. Non so quanto sia  
> compatibile con l’architettura generale del tuo sistema, ma Ã¨ un’idea.  
> Quel modulo Ã¨ closed source e non si puÃ² proprio toccare?  
> Il problema di utilizzare una pipe Ã¨ che il mio script Ã¨ parte di un  
> programma piÃ¹ grande, che lo “ingloba” come se fosse un modulo. Capisco  
> anche che senza mostrare il mio codice risulta difficile identificare il  
> mio problema.  
> Il modulo Ã¨ opensource, ma visto che viene utilizzato da altri script  
> preferivo non modificarlo.

> Cos’Ã¨ rescue warning?  
> Avendo poca esperienza con Ruby e con la programmazione in generale, sto  
> provando di tutto, cercando di poter gestire un’eccezione per un  
> warning. Fanta-programmazione 🙂

---

<div class="post-metadata">

**Author:** ![al\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f08c70/32.png) [@al\_S](https://www.ruby-forum.com/u/al_S)\
**Post date:** [January 4, 2010, 9:48am UTC](https://www.ruby-forum.com/t/rescue-warning/180861/7 "2010-01-04T09:48:05Z")

</div>

gabriele renzi wrote:

> non troppo, in smalltalk (e in perl6 e in common lisp, IIRC) puoi  
> davvero trattare i warning come exception  
> [GNU Smalltalk - Wikipedia](http://en.wikipedia.org/wiki/GNU_Smalltalk#Exceptions)
> 
> purtroppo in ruby no 🙂

Da quel che ho letto ho capito, magari sbagliando, che un warning  
smalltalk sia un particolare tipo di eccezione che una volta sollevata  
mostra il messaggio a lei associato. Non vedo difficoltÃ a fare in ruby  
la stessa cosa, creando una classe Warning che derivi da Exception e che  
faccia la puts del messaggio nell’initialize, ma Ã¨ possibile che ci  
siano dettagli dei warning smalltalk che mi sfuggono.

Limitandoci a risolvere il problema di Alfonso, la strada che suggerisci  
mi pare buona perchÃ© basterebbe fare il raise dell’eccezione subito dopo  
la puts del messaggio.

Paolo
