1. Exception
- 프로그램 실행 시 발생하는 다양한 형태의 오류
- 만약 오류가 발생하고 우리가 코드로 특별한 처리를 하지 않는다면 당연히 비정상 종료가 일어난다.
- 그런데
Exception Handling
을 하게 되면 이런 상황에서 프로그램을 비정상 종료 시키지 않고 지속적으로 수행시킬 수 있다.
- 이런 Exception은 다양한 class들로 제공된다.
- 모든 Exception class들의 최 상위 class는 Exception class
package test;
public class ExceptionTest {
public static void main(String[] args) {
System.out.println("예외 상황 발생시키기");
int result = 10 / 0;
System.out.println("이거 수행될까?");
}
}
- 기본적인 처리 코드는 다음과 같아요! ( try ~ catch 구문 )
package test;
public class ExceptionTest {
public static void main(String[] args) {
System.out.println("예외 상황 발생시키기");
try {
int result = 10 / 0;
} catch(ArithmeticException e) {
System.out.println("처리 완료");
}
System.out.println("이거 수행될까?");
}
}
- Exception(가장 상위 클래스)은 catch 구문 가장 첫 번째로 쓰면 안된다.
- 다른 하위 Exception 클래스를 먼저 위에 써야 한다.
package test;
public class ExceptionTest {
public static void main(String[] args) {
System.out.println("예외 상황을 발생시켜보자.");
try {
ExceptionTest t = null;
System.out.println(t.toString());
} catch (ArithmeticException e) {
System.out.println("처리 완료");
} catch (NullPointerException e) {
System.out.println("NullPointer 처리 완료");
} finally {
System.out.println("finally는 무조건 수행");
}
System.out.println("이 문장 출력되나요?");
}
}
- 추가적으로 예외 상황을 만들고 싶으면 어떻게 해야 할까?
- 내가 예외 상황을 새롭게 정의하고 싶다면
- 그러면 당연히 Exception class를 상속해서 우리 class를 정의하면 된다.
- is-a 관계에 의해 우리가 새로운 Exception을 정의할 수 있다.
- 사용자 정의 Exception
package test;
class MyException extends Exception {
}
public class ExceptionTest2 {
public static void main(String[] args) {
try {
throw new MyException();
} catch (Exception e) {
System.out.println("사용자 정의 Exception 발생");
}
}
}