2009-10-09 2 views

risposta

189

Metodo "def" può servire come un "inizio" dichiarazione:

def foo 
    ... 
rescue 
    ... 
end 
+0

Grazie I soli Volevo sapere come funziona. Questo è più o meno quello che stavo cercando. Grazie. – Sid

+2

Inoltre, le definizioni di classe, le definizioni dei moduli e (penso) i letterali di blocco 'do' /' end' formano blocchi di eccezioni implicite. –

+0

puoi fare def defidence garantire anche la fine? –

41

È inoltre possibile salvare in linea: "eccezione"

1 + "str" rescue "EXCEPTION!" 

stamperà fuori poiche 'String non può essere costretto a Fixnum'

+1

Come si salva e si visualizza l'eccezione backtrace in linea? –

+0

come restituire l'eccezione effettiva? – user1735921

21

sto usando il DEF/combinazione di salvataggio molto con le convalide ActiveRecord:

def create 
    @person = Person.new(params[:person]) 
    @person.save! 
    redirect_to @person 
rescue ActiveRecord::RecordInvalid 
    render :action => :new 
end 

Penso che questo è un codice molto magra!

14

Esempio:

begin 
    # something which might raise an exception 
rescue SomeExceptionClass => some_variable 
    # code that deals with some exception 
ensure 
    # ensure that this code always runs 
end 

Qui, def come una dichiarazione begin:

def 
    # something which might raise an exception 
rescue SomeExceptionClass => some_variable 
    # code that deals with some exception 
ensure 
    # ensure that this code always runs 
end 
Problemi correlati