2014-07-04 1 views
0

이름과는 다른 용도로 예외를 사용하는 것이 좋은 습관입니까? 예를 들어, "이미 있음"이라는 줄을 따라 예외를 원했고 "EntityExistsException"예외가 발견되었습니다. 이름은 좋았지 만 EntityManager을위한 것 같습니다. 수업을 사용하는 것이 좋습니까? 아니면 내 것을 직접 만들어야하나요?다른 목적을 위해 예외 클래스 재사용

+2

일반적으로 패키지가 수행중인 기능과 관련된 패키지가 아니면 예외를 다시 사용하지 마십시오. –

+0

@HotLicks 그것은 내가 사용하는 엄지 법칙입니다. 단, java.lang 또는 java.util과 같은 "일반적인"패키지에있는 경우에는 공정한 게임입니다. –

+0

@IanRoberts - 동의 –

답변

1

설명서를 읽으십시오. 코드에 익숙하지 않은 사람은 예외를 살펴보고 해당 설명서를 알고 있거나 읽거나 읽습니다. 이 경우

는 문서가에 의해 다른 상황에 던져 경우 EntityManager.persist (객체)가 이

소위 때 예외가 지속성 공급자에 의해 발생

말한다 코드가 Java API와 호환되지 않으며 버그가 있습니다.

일반적인 용도의 예외이며 널리 사용되며 '이미 존재하는 것'의 상태가 해당 사양에 해당되므로이 경우 IllegalStateException을 사용하거나 하위 클래스로 분류하는 경향이 있습니다. 클라이언트 코드가 '이미 존재합니다'상태를 다른 실패한 상태와 다르게 처리 할 것으로 예상하면 하위 클래스로 분류하고, 그렇지 않은 경우에는 그렇지 않습니다.

1

이 문제는 "의도 된 것과 다른 목적"이 완전한 제안을하기에 다소 모호하기 때문에 경우에 따라 가장 잘 응답 할 것입니다.

귀하의 경우에는 맛이 떨어질 수 있습니다. 개인적으로 이미 존재하는 예외 요구 사항이 지속성 계층과 관련이 없다면 새로운 예외를 만들기 쉽고 이후의 개발자 나 예외를 추측 할 수있는 코드를 혼동하지 않으므로 해당 패키지의 예외를 재사용하지 말 것을 권한다. 기본 구현에서 전달됩니다.

관련 문제