본문 바로가기
  • Coding & Book
학습단/JAVA 학습단

12. 혼공자 12일차(예외 처리)

by 루이3 2023. 7. 18.

예외 처리

  • 프로그램에서 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고
    정상실행을 유지할수 있도록 예외처리를 해야합니다.

 

try-catch-finally 블록

  • try 블록에는 예외 발생 가능 코드가 위치 합니다.
  • catch 블록은 try 블록에서 발생한 예외를 잡아 처리하는 코드입니다.
  • finally 블록은 예외 발생 여부와 상관없이 항상 실행되는 코드 입니다.
try {
    // 예외가 발생할 수 있는 코드
} catch (예외1 변수1) {
    // 예외1을 처리하는 코드
} catch (예외2 변수2) {
    // 예외2를 처리하는 코드
} finally {
    // 항상 실행되는 코드
}

 

다중 catch 블록

  • try블록에 다양한 예외가 발생할수 있는데 이를 예외별로 처리하기 위해 사용합니다.
  • catch 블록이 여러개여도 한개의 catch 블록만 실행됩니다.
  • 작성시 상위 예외 클래스가 하위 예외 클래스보다 아래쪽에 위치해야 합니다.
package sec10.exam01;

public class CatchOrderExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			String data1 = args[0];
			String data2 = args[1];
			int value1 = Integer.parseInt(data1);
			int value2 = Integer.parseInt(data2);
			int result = value1 + value2;
			System.out.println(data1 + "+" + data2 + "=" + result);
		} catch(ArrayIndexOutOfBoundsException e) {
			System.out.println("매개수 부족");
		} catch(Exception e) {
			System.out.println("실행 문제 발생");
		} finally {
			System.out.println("재실행 필요");
		}
	}
}

 

 

예외 떠넘기기

  • 메소드를 호출한 곳으로 예외를 떠넘길수 있습니다.
  • throws 키워드를 사용합니다.
  • throws 키워드가 붙어 있는 메소드는 반드시 try블록 내에 호출되어야 합니다.
  • throw 키워드 뒤에는 떠넘길 예외 클래스를 쉼표로 구분해 나열해 주면 됩니다.
package sec10.exam01;

public class ThrowsExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			findClass();
		} catch(ClassNotFoundException e) {
			 System.out.println("클래스가 없습니다.");
		}
	}
	
	public static void findClass() throws ClassNotFoundException {
		
		Class clazz = Class.forName("java.lang.String2");
	}
}