2013-09-03 5 views
1

시간 초과 오류, 503 오류 등과 같이 예기치 않은 오류가 발생할 수 있습니다. 내가 알지 못하는 오류가 있습니다. 내가 좋아하는 뭔가를 수행하여 그들 모두 설명 할 수 없다 :"구조를 구하기"의 대안

rescue Timeout::Error => e 

또한 Exception를 구출하는 끔찍한 생각입니다.

내가 사용할 수있는 대안은 무엇입니까? 오류가있을 때 코드를 모두 구제하기를 원합니다. 오류가 없으면 피해야합니다. 나는 등, 구문 오류 건너 뛸 내 스크립트를 죽일 수 있지만 할 수 있도록하려면

답변

6

당신은 StandardError에 대한 구조, 또는 단순히 구조, 동일있는 수

rescue StandardError => e 
# or 
rescue => e 

당신은 다음에서 볼 수 예외는 StandardError에서 구제됩니다. -이 테이블은 Exception의 하위 집합이며 주목할만한 오류가 있어야합니다.

물론 잘못된 장소에서 예외를 정의하는 보석을 가질 수는 있지만 잘 개발 된 보석에서는 발생하지 않아야합니다.

ruby exceptions http://rubylearning.com/images/exception.jpg

나는 개인적으로 나중에 오류를 상담하는 로그/역 추적 시스템에 추가하는 경우를 제외하고 내가 처리하는 방법을 알고있는 유일한 예외를 구출하는 것을 좋아합니다. 이 경우, 나는 보통 구출 StandardError

+0

아,'StandardError'. 그건 의미가 있습니다. 차트를 보내 주셔서 감사합니다. 구조를보고 도움이 필요한 부분을 정확히 파악하는 데 도움이됩니다. – Luigi

+1

"나는 개인적으로 예외 만 구하기를 좋아합니다. 어떻게 처리해야하는지 알고 있습니다 ..."내 멘토는 "다루지 않는 예외를 잡으려고하지 마십시오."라고 말하곤했습니다. –