저는 Java를 처음 사용하고 있으며 예외 처리를 고려하고있었습니다. 우리가 자바 예외를 잡을 때, 우리는, 선언하고 초기화하지 않고 Exception
클래스의 Object
를 사용 즉Java 예외 클래스
catch(NullPointerException e)
e.printStackTrace();
그래서 제 질문은, 어떻게 우리가 그것을 인스턴스화하지 않고 객체 참조 전자를 사용할 수 있습니다입니까?
저는 Java를 처음 사용하고 있으며 예외 처리를 고려하고있었습니다. 우리가 자바 예외를 잡을 때, 우리는, 선언하고 초기화하지 않고 Exception
클래스의 Object
를 사용 즉Java 예외 클래스
catch(NullPointerException e)
e.printStackTrace();
그래서 제 질문은, 어떻게 우리가 그것을 인스턴스화하지 않고 객체 참조 전자를 사용할 수 있습니다입니까?
은 그들은 잘 인스턴스화 :
void example() {
throw new UnsupportedOperationException("message");
} // ^^^
void demonstration() {
try {
example();
} catch (UnsupportedOperationException e) {
e.printStackTrace();
}
}
이 매우 간단한 예는 꽤 자기 설명해야 ...
이throw
문을 사용하여 오류가 발생하면 예외가 (종종) 인스턴스화됩니다. 예를 들어,
throw new NullPointerException();
(이것은 단지 예입니다 있습니다. NPEs는 일반적으로 명시 적으로 자신의 코드에 던져되지 않습니다.)
catch
절은 매개 변수를 선언하는 기능과 유사하다. s
를 인스턴스화하지 않는 기능
void func(String s) {
// ...
}
func
을 고려하십시오. String
은 다른 곳에서 만들어져 함수로 전달됩니다. 같은 방법으로 우리는 throw
으로 예외를 만들고 매개 변수와 같은 종류의 catch
절에 "전달"됩니다.
예, catch(NullPointerException e)
에 e
를 참조 throw new NullPointerException("some error message");
예외가 인스턴스화됩니다. 잠재적으로 예외를 던질 수있는 클래스 내부에서 발생합니다. 당신의 정보를 위해서, 키워드 throw는 예외를 생성하고 던질 책임이있다. catch 메소드는 예외를 catch합니다. 이 키워드를 사용하여 예외를 구현할 수도 있습니다.
힌트 : 당신이 잡는 예외 객체는 * 예외가 던진 블록 내에서 인스턴스화되었다. – Santa
동일하게 메서드 매개 변수에 적용됩니다. 그들은 다른 곳에 건설되어 그 방법으로 보내집니다. 예외는 아니지만 다른 메커니즘입니다. – EJP