개발을 하면서 반드시 마주하게 되는 문제 중 하나는 다양한 형태의 에러와 예외입니다. 이 글에서는 자바의 예외 처리에 대해 개념부터 예제까지 다뤄보겠습니다!😊
우선 에러와 예외의 차이점에대해 알아야합니다.
프로그램 실행 중 발생할 수 있는 예외 상황에 대비하여 코드로 이를 처리하는 방식.
try {
// 예외가 발생할 가능성이 있는 코드
} catch (예외_클래스 e) {
// 예외 발생 시 처리할 코드
} finally {
// 예외 발생 여부와 상관없이 항상 실행되는 코드
}
public class ExceptionExample {
public static void main(String[] args) {
String[] languages = {"Java", "Python", "C++"};
try {
for (int i = 0; i <= languages.length; i++) {
System.out.println(languages[i]);
}
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
System.out.println("배열 인덱스 초과 예외가 발생했습니다.");
} finally {
System.out.println("예외 발생 여부와 상관없이 실행되는 블록입니다.");
}
}
}
직접 예외 처리 (try-catch)
메서드 내에서 예외를 처리.
간접 예외 처리 (throws)
메서드 선언부에 throws 키워드를 사용해 호출한 쪽으로 예외를 전달.
public class ExceptionDemo {
public String getInput() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
return br.readLine();
}
}
public class Main {
public static void main(String[] args) {
ExceptionDemo demo = new ExceptionDemo();
try {
String input = demo.getInput();
System.out.println("입력한 값: " + input);
} catch (IOException e) {
e.printStackTrace();
}
}
}
특정 상황에서 의도적으로 예외를 발생시키려면 throw 키워드를 사용합니다.
public void validateNumber(int number) throws Exception {
if (number < 0) {
throw new Exception("음수는 허용되지 않습니다.");
}
}