2009-03-30 2 views
5

나는 루비의 예외 계층 구조 (pickaxe와 hummingbird 모두에 언급되어있다.)에 접근 할 수있다. 그러나 각 예외에 대한 정보를 찾지 못했기 때문에 어떤 예외를 사용할 지 모르겠다. 용어의 의미.루비의 오른쪽 예외 서브 클래스 사용하기

올바른 예외 클래스 사용 문제가 있습니까? 그것이 당신에게 문제가되지 않을 경우

+0

http://redmine.ruby-lang.org/projects/ruby/wiki/ExceptionClassesDoc의 예외 클래스에 대한 설명이 막 번졌습니다. –

답변

8

"다릅니다."

Ruby의 주요 문제점 중 하나는 좋은 사양이 부족하다는 것입니다. 하지만 더 악화 되곤했습니다.

이것은 주로 스타일의 문제입니다 : 오류가 내장 된 예외 클래스 중 하나를 사용하여 잘 설명 될 수 있다면 그것을 사용하십시오. 하위 클래스가 적절하다고 생각되면 사용하십시오.

그렇지 않으면, 당신은 을 따라 고려할 수 :

을 계층은 시간 낭비 매우 정교한 예외 만들기. 아무도 돌보는 끝내고 모든 노력은 쓰레기로 간다. 대신 라이브러리 또는 네임 스페이스 당 예외를 만들고 예외 유형을 나타내려면 예외 내에 예외 이유가 있습니다.

예를 들어 OS 캡슐화 libary의 경우 OsencapException 예외를 설정하십시오.

+1

라이브러리 당 하나의 예외를 만드는 대신 각 조건에 대해 하나의 예외를 만드는 것이 좋습니다 당신은 붙잡고 싶습니다. 기본적으로 RuntimeError를 사용할 수 있으며, 구조 블록에서 오류 메시지를 구문 분석한다고 생각되면 새로운 클래스를 생성하십시오. – Arsen7

1

번호

또는 오히려, 그것은 일반적으로 다른 사람에게 중요하지 않습니다. 라이브러리를 작성하는 경우 라이브러리 사용자가 이해할 수있는 내용을 사용해야하지만 그게 전부입니다.

10

독자적인 예외를 만들 때 중요합니다. 중요한주의 사항 중 하나는 Exception에서 상속받은 Exception이 아니라 StandardError (일반적인 실수)가 구조에 의해 잡히지 않을 것입니다 (인수없이).

+8

이것은 모든 Exception 클래스가 항상 StandardError에서 상속되어야하며 Exception에서 직접 상속 받아서는 안된다는 것을 의미합니다. 이걸 조금 더 명확하게 만들 수 있었을거야. –