[Java] Exception

클라우드·2024년 4월 4일
0

Java

목록 보기
9/20
post-thumbnail

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;  // Exception 발생
        // Exception이 발생하면 해당 Exception에 대한
        // 클래스를 찾아서 Exception 객체를 생성한다.
        // (java.lang.ArithmeticException)
        // 자동으로 생성된 이 객체를 프로그램적으로 처리를 안해주면
        // 프로그램 비정상 종료!
        // Exception Handling 해서 강제 종료를 하지 않는다.
		System.out.println("이거 수행될까?");
		
	}
}
  • 기본적인 처리 코드는 다음과 같아요! ( try ~ catch 구문 )
package test;

public class ExceptionTest {

	public static void main(String[] args) {
		
		System.out.println("예외 상황 발생시키기");
		try {
			int result = 10 / 0;  // Exception 발생	
		} 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 { // Exception e <- 이것은 Exception의 상위 클래스
            // int result = 10 / 0; // Exception 발생
            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는 무조건 수행");
        }

        // Exception이 발생하면 해당 Exception에 대한
        // 클래스를 찾아서 Exception 객체를 생성한다.
        // (java.lang.ArithmeticException)
        // 자동으로 생성된 이 객체를 프로그램적으로 처리를 안해주면
        // 프로그램 비정상 종료!
        // Exception Handling 해서 강제 종료를 하지 않는다.
        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 발생");
        }
    }
}
profile
안녕하세요 :)

0개의 댓글