2009-06-30 7 views
1

암시 적 예외와 명시 적 예외의 차이점은 무엇입니까?암시 적 및 명시 적 예외 차이

catch 블록을 선언하면 : catch (Exception e). 이것은 암시 적으로 예외를 선언하거나 명시 적으로 선언합니까?

미리 감사드립니다.

+0

"암시 적"및 "명시 적"예외에 대해 들어 본 적이 없습니다. – akappa

+0

나는 그가 다음과 같은 것을 의미한다고 생각한다 : http://www.python.org/dev/peps/pep-0317/#implicit-instantiation (파이썬) – Jorn

+0

그냥이 정보를 여기에 추가하고 싶다. 암시 적 또는 명시 적 예외는 없지만 일반적으로 암시 적으로 throw 된 예외 또는 명시 적으로 예외가 발생한 예외를 사용합니다.
예 : Runnable 인터페이스의 run()은 run() 메소드에 정의 된 검사 예외가 없으므로 암시 적으로 RuntimeException을 던집니다. 반면 Callable의 call()은 Exception 유형 예외를 명시 적으로 throw합니다. –

답변

2

나는 "암시 적 예외"또는 "명시 적 예외"와 같은 용어가 있다고 생각하지 않습니다. 아마도 체크하고 체크하지 않은 예외를 생각하고 있습니까?

방금 ​​언어 사양을 PDF로 다운로드했으며 "암시 적 예외"및 "명시 적 예외"라는 구는 그 안에 아무 곳에도 존재하지 않습니다.

약관을 어디서 발견 했습니까?

+0

안녕 존. 페이지 번호에 줄이 있습니다. 헤드 퍼스트 서블릿에 470 개가 있고 그 줄은 다음과 같습니다. "더 명확한 예외를위한 오류 페이지 선언." 여기에 "명백한 예외"가 무엇을 의미하는지 말해 주시겠습니까? – Greenhorn

+0

아 - 그게 "특정 유형의 예외에 대한 오류 페이지를 선언하는 것"이라고 생각합니다. 다른 말로하면, "잘못된 것"에 대한 하나의 오류 페이지와 "AuthenticationException"에 대한 다른 오류 페이지가있을 수 있습니다. –

+0

이 문맥에서 더 명백하게 드러나는 것은 더 일반적인 기본 클래스 유형보다 파생 된 (보다 구체적 인) 예외 유형을 의미합니다. – nojevive

1

나는 명시 적으로 생성자를 호출하지 않고도 암시 적으로 객체를 인스턴스화한다고 생각합니다. 나는 당신이 자바에서 그렇게 할 수 있다고 생각하지 않는다.

예 :

throw new Exception(); 

생성자를 호출하고 새로 만든 Exception 객체를 던졌습니다.

0

아니요. catch가 예외를 선언하지 않습니다. 예외를 선언하는 방법에 발생합니다

pubic void someMethod() throws Exception. 

난 당신이 명시 적 대 암시 무슨 뜻인지 모르겠어요. 아마도 런타임과 검사 된 예외의 차이 같은 것을 의미 할 수도 있지만, 선택적인 런타임 예외를 throw하는 메서드를 의미 할 수도 있습니다.

public void someMethod() throws NullPointerException 

이 경우의 throw는 순전히 선택 사항입니다. 이는 런타임 예외이기 때문에 다르게 발생해야합니다.

0

에만 질문의 첫 번째 부분에 적용

용어 명시 적 및 암시 예외가 존재하고 Java 가상 머신이 예외를 처리하는 방법과 관련 않습니다. 최종 사용자 (Java 프로그래머)보기에서, 이는 명백한 성능 이점 외에도 동일합니다.

명시 적 예외는 JVM에서 명시 적으로 확인한 예외입니다. 예를 들어, 모든 배열 인덱싱 작업은 JVM에 의해 범위 내에 있는지 명시 적으로 검사됩니다.

암시 적 예외는 여파로 발생하는 예외입니다. 예를 들어 NullPointerExceptionStackOverflowException이 세그먼트 화 오류에 대한 처리기 루틴에 발생합니다. JVM이 던질 수있는 모든 작업에 오버 헤드가 발생하는 대신 운영 체제에서 신호를 받으면 성능이 크게 향상됩니다.

관련 문제