Gli errori con ruby

Salve.
ho uno script di questo tipo:


Thread.new do
miooggetto.metodo
end

Quello che succede è che se c’è un errore all’interno del codice di
miooggetto.metodo, questo non mi viene segnalato da ruby, lo script
sembra si esegua fino al punto dove poi c’è l’errore e poi rimanga
bloccato.
Se porto il codice buggato al di fuori del metodo e lo provo su uno
script di prova, l’errore mi viene invece segnalato.
Perchè?

Simone [email protected] writes:

Quello che succede è che se c’è un errore all’interno del codice di
miooggetto.metodo, questo non mi viene segnalato da ruby, lo script
sembra si esegua fino al punto dove poi c’è l’errore e poi rimanga
bloccato.
Se porto il codice buggato al di fuori del metodo e lo provo su uno
script di prova, l’errore mi viene invece segnalato.
Perchè?

É il comportamento di default. Il thread principale non muore se un
figlio scatena un’eccezione. Se setti Thread.abort_on_exception a true
allora avrai il comportamento che desideri. Es.

class Foo
def bar
1 / 0
end
end
a = Foo.new

Thread.abort_on_exception = true
Thread.new do
a.bar
end

puts “Not reached”

Invece che generare un abort di ruby puoi sempre gestire gli errori in
maniera piu’ completa con begin,rescue, ensure, etc.

Ciao

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs