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è?
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.