본문 바로가기
Study with me/TECH!T back-end shcool 7

week_04 JAVA 8/11

by 외계나무 2023. 11. 6.

Exception

예외처리: 프로그램 실행 중에 예기치 못해 발생하는 예외 상황을 미리 예측하고 처리하는 것.

Java에서 발생하는 다양한 예외(Exception)는 java.lang.Exception 클래스를 상속받는 하위 클래스들이다. 주요 예외 클래스는 다음과 같다.

  • ArithmeticException: 수학 연산 중에 발생. 0으로 나누는 등의 오류 포함.
  • NullPointerException: null 객체에 접근하려고 할 때 발생.
  • ArrayIndexOutOfBoundsException: 배열 요소에 유효하지 않은 인덱스로 접근하려고 시도할 때 발생.
  • FileNotFoundException: 파일을 찾을 수 없을 때 발생. → 파일 저장 및 불러오기는 예외 처리가 필수적
  • IOException: 입출력 작업 중에 발생하는 일반적인 입출력 예외. → 자주 사용
  • SQLException: 데이터베이스 작업 중에 발생하는 SQL 관련 예외. → DB 사용은 예외 처리가 필수적
  • ClassNotFoundException: 클래스가 존재하지 않을 때 발생.
  • IllegalArgumentException: 메서드에 전달된 인수가 잘못된 경우 발생.

→ 이러한 클래스들을 활용한 예외처리는 코드 실행 중 예상치 못한 문제에 대처하기 위해 사용된다. 이를 통해 프로그램은 예외 상황에 대응하여 안정성을 유지하고 개발자와 사용자에게 적절한 오류 메시지를 표시하는 등 대처할 수 있다.

예외 처리 방법

try {
    // 오류가 발생할 수 있다고 예상되는 수행문
} catch (예외_클래스 e) {
    // 해당 예외가 발생했을 때의 수행문
    // 여러 오류가 예상되는 상황에 대비해 catch는 각 클래스를 담은 여러 블록 가능
    // 발생 가능한 오류의 종류가 정확히 예측되지 않거나 다양한 오류가 예상되면 그냥 Exception으로 받기도 함
    // 주로 따로 작성한 오류 메시지 출력 or e.printStackTrace();
} finally {
    // 오류 발생 여부와 관련 없이 반드시 수행해야 하는 수행문 (옵션)
}

throws

: 예외가 발생했을 때 예외(가 있는 함수)를 호출한 쪽에서 처리하도록 던져버리는 것

// 함수명 뒤에 throws 발생가능한_예외_클래스
public static int divide(int i, int j) throws ArithmeticException{
    int k = i / j;
    return k;
}

throw

: 강제로 오류를 발생시키기 (보통은 오류를 떠넘기는 throws와 같이 사용)

    public class Main {   
        public static void main(String[] args) {
            int i = 10;
            int j = 0;
            try{
                int k = divide(i, j);
                System.out.println(k);
            }catch(IllegalArgumentException e){
                System.out.println("0으로 나누면 안 됨.");
            }           
        }

        public static int divide(int i, int j) throws IllegalArgumentException{
            if(j == 0){
                throw new IllegalArgumentException("0으로는 못 나눔.");
            }
            int k = i / j;
            return k;
        }   
    }

사용자 정의 Exception

Exception 클래스나 그 하위 클래스를 상속받아 사용자가 예외 클래스를 정의하여 사용할 수 있다.
참고 - 프로그래머스 사용자 정의 Exception

'Study with me > TECH!T back-end shcool 7' 카테고리의 다른 글

week_04 Optional +@  (0) 2023.11.08
week_04 JAVA 9/11  (0) 2023.11.07
week_03 HTML&CSS&JavaScript 2/2  (8) 2023.11.03
week_03 HTML&CSS&JavaScript 1/2  (0) 2023.11.02
week_03 MySQL 2/2  (0) 2023.11.01