-
자바에서는 예외발생시 Exception 클래스가 해당 Exception 객체를 만들어서 throw 시키며 종류는 2가지로 나뉜다.
Exception을 상속받고 있는 클래스의 인스턴스
checked Exception() = 일반 예외 >>> 컴파일러가 체크를 함
unchecked Exception(Runtime Exception) = 실행예외 >>> 컴파일러가 체크를 안함(개발자의 실수)
Runtime Exception을 상속받고 있는 클래스의 인스턴스
public class ExceptionEx2 {
public static void main(String[] args) {
int i=3;
try {
System.out.println(i/0);//ArithmeticException
}catch(ArithmeticException e) {
// Exception이 throw(튀어나오면) 잡아야(catch)한다.
e.printStackTrace();//로그에서 에러내용을 쭉 뿌려줌<< e.printStackTrace(); 무조건 존재해야함
}
System.out.println("프로그램 종료");
}
}
다중 예외처리
public class ExceptionEx3 {
public static void main(String[] args) {
try {//컴파일러가 체크해줌으로 unchecked Exception 이다
int i =0;
System.out.println(3 /i);
Class.forName("");
} catch (ClassNotFoundException | ArithmeticException e) {//다른 예외를 하나의 블록으로 처리하고 싶을때
e.printStackTrace();
}catch(NullPointerException e1) {//다른 예외를 다른 블록으로 처리하고 싶을때
e1.getStackTrace();
}catch(Exception e2) {//모든 예외의 상위클래스는 Exception이므로 맨 아래에 위치해야한다.
//위에 위치하게 되면 아래의 catch문이 실행되지않으므로 컴파일에러가 난다.
}
}
}
예외 떠넘기기 (throws)
public class ExceptionEx4 {
public static void main(String[] args) throws ClassNotFoundException {//main 메서드에서도 떠넘긴다면 JVM이 잡아서 예외발생시 프로그램을 종료시킨다.
method1();
}
public static void method1() throws ClassNotFoundException {//다시 떠넘김
method2();
}
public static void method2() throws ClassNotFoundException{//예외를 떠넘김으로 사용처에서 예외처리를 하라는 정의
Class.forName("");
}
}
'JAVA-Basic' 카테고리의 다른 글
10.Thread와 동기화(synchronized) (0) | 2020.07.10 |
---|---|
9.hashcode & equals (0) | 2020.07.10 |
7.람다(Lamda)를 이용한 익명 구현 객체(Anonymous implementation Object) 사용 (0) | 2020.07.10 |
7.익명클래스(AnonymousClass) (0) | 2020.07.10 |
6.Interface와 다형성의 구현과정 (0) | 2020.07.10 |