지원되지 않거나 구현되지 않은 작업에 대해 Java에서 발생하는 표준 예외는 무엇입니까?


308

특히 Exception이러한 상황에서 사용되는 표준 서브 클래스가 있습니까?


클래스가 메소드를 구현하지 않을 때 사용하는 것이 적절하지만 하위 클래스가 그렇게 할 수 있습니까? 다시 말해서, 비추 상 클래스에서 추상 메소드를 갖는 것입니다.
osa

@SergeyOrshanskiy 객체를 생성하는 방법에 따라 멤버 변수를 인스턴스화하기 위해 인터페이스를 구현하는 익명 클래스를 만들어야하지만 사용하지 않으려는 경우에 유용합니다. 당신이 그것을 설정하고 null실수로 그것을 사용하면 (또는 다른 사람이) 이 경우 NullPointerExceptions보다 덜 분명한 것을 얻을 것 UnsupportedOperationExceptions입니다. 단지 예입니다.
2rs2ts

답변:


438

java.lang.UnsupportedOperationException

요청한 작업이 지원되지 않음을 나타 내기 위해 발생합니다.


4
@JarrodRoberson 좋습니다.이 경우 해당 설명은 클래스 문서에서 실제로 제거해야합니다. 다른 패키지에서 예외가 사용 된 것 같습니다. 오라클이 그렇게한다면 우리도 그렇게해야한다고 생각합니다. 버그 신고를하겠습니다.
Maarten Bodewes 2016 년

1
확인란선택되어 있지 않습니다 RuntimeException. 컴파일 시간 동안 이러한 예외를 처리 할 때 피드백이나 도움을받지 않습니다. 스텁 된 메소드 또는 진행중인 작업에 사용되는 경우 일종의 확인 된 예외 를 사용해야합니다 .
TastyWheat

221

이름을 지정한 두 경우를 구별하십시오.

  • 요청한 작업이 지원되지 않고 대부분의 경우 절대로 수행하지 않을 것임을 나타내려면을 던집니다 UnsupportedOperationException.

  • 요청한 작업이 아직 구현되지 않았 음을 나타내려면 다음 중에서 선택하십시오.

    1. commons-lang2에서 사용 가능했으며 버전 3.2에서 commons-lang3에 다시 추가 된 NotImplementedExceptionfrom apache commons-lang 을 사용하십시오 .

    2. 자신의 것을 구현하십시오 NotImplementedException.

    3. UnsupportedOperationException"아직 구현되지 않음"과 같은 메시지와 함께를 던지십시오 .


1
나는 합리적으로 보이기 때문에 이것과 함께 가고 있습니다. 예외에 의해 표시된 "아직"또는 "절대"는 이에 대응하는 방법에 대한 아이디어를 제공합니다.
sschrass

3
실제로는 # 1 또는 2가 매우 바람직합니다. # 3은 "지원되지 않음"과 "구현되지 않음"사이의 의미 론적 차이를 포착하지만 별도의 클래스를 사용하면 커밋하기 전에 수행해야 할 작업을 잊어 버린 것을 쉽게 검색 할 수 있습니다.
Sean U

4
# 3은 commons-lang 인 경우에도 타사 라이브러리 나 추가 작업이 필요하지 않으므로 구현되지 않은 메소드에 가장 적합합니다.
JoshDM


14

더 세분성과 더 나은 설명을 원한다면 commons-lang의 NotImplementedException을 사용할 수 있습니다

경고 : 버전 2.6 이전 및 버전 3.2 이후에만 사용 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.