예외 발생시키기
thorw를 사용해서 프로그래머가 고의로 예외를 발생시킬 수 있다.
1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음
Exception e= new Exception(”고의로 발생시켰음”);
2. 키워드 thorw를 이용해서 예외를 발생시킨다.
thorw e;
class Throw {
public static void main(String args[]) {
try {
Exception e = new Exception("고의로 발생시켰음.");
throw e; // 예외를 발생시킴
//throw new Exception("고의로 발생시켰음.");
} catch (Exception e) {
System.out.println("에러 메시지 : " + e.getMessage());
e.printStackTrace();
}
System.out.println("프로그램이 정상 종료되었음.");
}
}
Exception 인스턴스를 생성할 때, 생성자에 String을 넣어 주면, 이 String이 Exception인스턴스에 메시지로 저장된다. 이 메세지는 getMessage()를 이용해서 얻을 수 있다.
checked 예외, unchecked 예외
class Exception {
public static void main(String[] args) {
throw new RuntimeException(); // RuntimeException을 고의로 발생시킨다.
}
}
이 예제가 명백히 RuntimeException을 발생시키는 코드를 가지고 있고, 이에 대한 예외처리를 하지 않았음에도 불구하고 성공적으로 컴파일 된다.
‘RuntimeException클래스와 그 자손(unchecked예외)’에 해당하는 예외는 프로그래머가 실수로 발생하는 것들이기 때문에 예외처리를 강제하지 않는 것이다.
만일 RuntimeException클래스들에 속하는 예외가 발생할 가능성이 있는 코드에도 예외처리를 해야 한다면, 아래와 같이 참조 변수와 배열이 사용되는 모든 곳에 예외처리를 해주어야 할 것이다.
try {
int[] arr = new int[10];
System.out.println(arr[0]);
} catch(IndexOutOfBoundsException ie) {
...
} catch(NullPointerException ne) {
...
}
메서드 예외 선언
메서드의 선언부에 키워드 thorws를 사용해서 메서드 내에서 발생할 수 있는 예외를 적어준다.
예외가 여러 개일 경우에는 쉼표(,)로 구분한다.
void method() throws Exception1, Exception2, ... ExceptionN {
// 메서드의 내용
}
만일 아래와 같이 모든 예외의 최고 조상인 Exception클래스를 메서드에 선언하면, 이 메서드는 모든 종류의 예외가 발생할 가능성이 있다는 뜻이다.
void method() thorws Exception){
//메서드의 내용
}
메서드의 선언부에 예외를 선언함으로써 메서드를 사용하려는 사람이 메서드의 선언부를 보았을 때, 이 메서드를 사용하기 위해서는 어떠한 예외들이 처리되어야 하는지 쉽게 알 수 있다.
자바에서는 메서드를 작성할 때 메서드 내에서 발생할 가능성이 있는 예외를 메서드의 선언부에 명시하여 이 메서드를 사용하는 쪽에서는 이에 대한 처리를 하도록 강요하기 때문에, 프로그래머들의 짐을 덜어 주는 것은 물론이고 보다 견고한 프로그램 코드를 작성할 수 있도록 도와준다.
'Server > 자바의정석' 카테고리의 다른 글
[Java 입문] 예외2 (1) | 2022.09.30 |
---|---|
[Java 입문] try - catch - finally (0) | 2022.09.30 |
[Java 입문] 오류 & 예외 (4) | 2022.09.29 |
[Java 입문] 디폴트 메서드 & Static 메서드, 내부 클래스 (1) | 2022.09.29 |
[Java 입문] 추상(abstract) & 인터페이스(Interface) (0) | 2022.09.28 |