JAVA-Basic

8.Exception 예외와 처리

Jungsoomin :) 2020. 7. 10. 15:40

 

  • 자바에서는 예외발생시 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("");
	}
}