[JAVA] 자바 예외 처리, 뭐가 적절할까

Hannana·2024년 10월 1일

코드의 안정성을 위해 꼭 알아야 할 예외 처리에 대해 알아보자.

핸들링 문법

1. try-catch 사용

데이터베이스 호출이나 외부 API와 같은 예외가 발생할 수 있는 작업에 적합함
예외가 발생하면 해당 예외를 적절히 처리하거나 로그를 남길 수 있다.

2. if 조건문 사용

반환된 데이터가 유효한지 확인할 때 유용하다.
ex:) 특정 값이 null인지 확인


에러 처리 방식은 애플리케이션의 요구 사항과 개발 스타일에 따라 다를 수 있지만
두 가지를 적재적소에 함께 쓰는 것도 많이 쓰이는 방식 중 하나.

자바 Exception 종류🚫

Java에서 예외 처리를 할 때
Checked Exception과 Unchecked Exception을 분리하여 사용한다.

1. Checked Exception

컴파일 타임에 확인되는 예외로, 반드시 처리해야 한다.
= 명시적으로 처리해야 함
RuntimeException을 제외한 모든 예외를 가리킴.

-IOException: 파일 입출력 관련 오류
-SQLException: 데이터베이스 접근 오류
-ClassNotFoundException: 클래스를 찾을 수 없는 경우
-ParseException: 파싱 오류
-FileNotFoundException: 파일을 찾을 수 없는 경우

파일 읽기, 데이터베이스 연결 등 외부 시스템과의 상호작용에서 발생할 수 있는 예외 상황에 주로 사용한다.

사용 방법) 메소드에서 발생할 가능성이 있는 예외를 명시하고 호출하는 쪽에서 예외 처리하도록 강제

ex:)

public void readFile(String filePath) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(filePath));
    String line = reader.readLine();
    System.out.println(line);
}

public static void main(String[] args) {
    try {
        readFile("non_existent_file.txt"); // 예외 발생 가능성
    } catch (IOException e) { //필수 작성💥
        System.out.println("파일을 읽는 중 오류 발생: " + e.getMessage());
    }
}

2. Unchecked Exception

런타임에 발생하는 예외로 컴파일 시에 체크되지 않는 것이 특징.
일반적으로 프로그래머의 실수로 발생한다. RuntimeException 하위의 모든 예외.

-NullPointerException: null 참조를 접근하려고 할 때 발생
-ArrayIndexOutOfBoundsException: 배열의 잘못된 인덱스를 접근할 때 발생
-ArithmeticException: 수학적 계산 오류 (예: 0으로 나누기)
-ClassCastException: 잘못된 타입 변환을 시도할 때 발생
-IllegalArgumentException: 메소드에 잘못된 인수를 전달할 때 발생

잘못된 입력 값, 잘못된 타입 변환 등 프로그래머가 예측할 수 없는 상황에서 발생하는 예외 상황에 주로 사용한다.

ex:)

String str = null;
try {
    int length = str.length();
} catch (NullPointerException e) {
    e.printStackTrace(); // null 객체 접근 시 처리, but 생략 가능
}
profile
(구) https://hansjour.tistory.com/ 이사옴. 성장하는 하루를 쌓아가는 블로그

0개의 댓글