Interessanti slide sull'exception handling

http://avdi.org/talks/exceptional-ruby-rubyconf-2011/exceptional-ruby.html

Ciao,

Giusto per fare un paragone con un error handling moderno, in .net si
usa il throw per passare un eccezione da una parte all’altra, in ruby
cambia poco:
begin

rescue

fa qualcosa

raise $!
end

in ruby il throw ha un funzionamento diverso che per una questione di
abitudine (forse cattiva) non ho mai usato
begin

rescue

fa qualcosa

throw :ciccia
end

catch :ciccia do

si verifica l’errore

… codice non eseguito in caso di errore

end

non ho capito invece il motivo di generare una nuova eccezione tanto
meno sapevo fosse una pratica molto comune

2011/10/3 Marco M. [email protected]:

Giusto per fare un paragone con un error handling moderno, in .net si
usa il throw per passare un eccezione da una parte all’altra, in ruby
cambia poco:
begin

rescue

fa qualcosa

raise $!
end

puoi anche fare “raise” senza parametri, prende da se il $! :slight_smile:

in ruby il throw ha un funzionamento diverso che per una questione di
abitudine (forse cattiva) non ho mai usato

il throw sostanzialmente un goto (o un “super-break”), con tutti i
pro e i contro… Ha un senso se quello che vuoi una forma di early
termination che restituisca un valore, saltando a pi pari il codice
che c’ intorno, piuttosto che quando vuoi segnalare un errore.


twitter: @riffraff
blog (en, it): www.riffraff.info riffraff.blogsome.com
work: cascaad.com www.circleme.com