2009-08-24 3 views

답변

12

Rails의 일부가 아닌 Rails의 일부이므로 예외 처리를 할 수 있습니다. 당신이 오류를 포착하여 원하는 목적지, 너무로 포장 :

begin 
    SomethingElse.doSomething(x, y) 
rescue Exception 
    ErrorLogger.log(Time.now, "Something went wrong!") 
end 

주의 사항 당신해야 대신 "구조"항상 "구조 예외". "rescue"를 사용하는 것만으로 Exception의 하위 클래스 인 StandardError를 잡을 수 있습니다.이 의미는 무언가가 통과하기를 원하지 않는 것을 의미합니다. 당신의 코드에서 어디

raise ArgumentError, "Illegal arguments!" 

을 그에게 모델이나 컨트롤러를 수 :

또한 평소와 같이, 당신은 수행하여에게 예외를 발생시킬 수 있습니다.

+2

작은 수정 : 두 번째 코드 조각에 두 번'raise'가 있습니다. 좋은 대답. – Shadwell

+0

구문 오류 또는 이중 인상이 아닙니다. http://web.njit.edu/all_topics/Prog_Lang_Docs/html/ruby/syntax.html#raise –

+2

일반적으로 동의하지만 첫 번째 코드 블록에 동의하지 않습니다. "rescue Exception"은 프로세스를 죽이려는 신호조차도 구출하므로 직접 사용하지 마십시오. 분명히 코드의 일부분이 깨끗하게 제거되지 않도록하고 싶지 않다면, Ruby가 가지고있는 기본 동작을 고수해야합니다. 따라서 일반적으로 바닐라 "구조"를 사용하고 사용자 정의 오류 클래스를 StandardError에서 파생시키는 것이 좋습니다. – nertzy

1

내가 실수하지 않는다면 루비 어디서나 오류 처리를 사용할 수 있습니다. 너 뭐하려고?

관련 문제