(JAVA) 예외처리 알아가기

2024. 9. 20. 09:03·JAVA

● 오늘의 ISSUE

예외란 무엇이고, 처리방법, 예외 처리하면 좋은 이유 등 여러가지 예외처리에 대해 알아가보자.

● 예외처리

◈. 예외(Exception)란?

  • 예외는 프로그램 실행 중에 발생하는 오류로, 프로그램의 정상적인 흐름을 방해하는 하나의 사건.
  • Java에서 예외는 Throwable 클래스를 상속받아 두 가지 유형으로 나뉨.
    • Checked Exception: 컴파일 시점에서 예외 처리를 강제하는 예외 (예: IOException, SQLException).
    • Unchecked Exception (RuntimeException): 실행 시점에서 발생하며, 예외 처리가 강제되지 않는 예외 (예: NullPointerException, ArrayIndexOutOfBoundsException).

◈. 에외 처리 구문

  • Java에서 예외 처리는 try-catch-finally 구문을 사용하여 수행합니다.
try {
    // 예외가 발생할 가능성이 있는 코드
} catch (ExceptionType e) {
    // 예외 발생 시 처리 코드
} finally {
    // 항상 실행되는 코드 (선택적)
}

 

※ 코드 설명

  • try : 예외가 발생할 수 있는 코드를 작성.
  • catch : 예외가 발생하면 해당 예외를 처리하는 블록이고 여러 개의 catch 블록을 사용하여 다양한 예외를 처리 가능.
  • finally : 예외 발생 여부와 상관없이 항상 실행되는 블록. 리소스 해제 코드가 주로 여기에 위치.

▶ 실제 코드 사용 예시

try {
    int result = 10 / 0;  // ArithmeticException 발생
} catch (ArithmeticException e) {
    System.out.println("0으로 나눌 수 없습니다.");  // 예외 처리
} finally {
    System.out.println("이 코드는 항상 실행됩니다.");
}

 

◈. 예외 전파(Exception Propagation)

  • 메서드에서 예외가 발생하고, 해당 메서드에서 예외를 처리하지 않으면, 예외는 호출된 메서드로 전파됨.
  • 메서드에 throws 키워드를 사용하여 호출자에게 예외 처리를 위임 가능.

예시)

public void method() throws IOException {
    throw new IOException("입출력 예외 발생");
}

 

◈. 사용자 정의 예외

  • Java에서는 필요에 따라 개발자가 직접 예외 클래스를 정의할 수 있고, 사용자 정의 예외는 Exception 클래스를 상속받아 작성.

예시)

class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

public class Test {
    public void checkValue(int value) throws MyException {
        if (value < 0) {
            throw new MyException("음수는 허용되지 않습니다.");
        }
    }
}

 

◈. 예외 처리의 좋은 습관

  • 구체적인 예외를 먼저 처리하고, 범용 예외는 나중에 처리하는 것이 좋음
  • catch 블록에서 너무 많은 예외를 처리하는 것은 피하고, 특정 예외에 대한 적절한 처리를 설계하는 것이 !중요!.
  • finally 블록은 자원 해제 (파일 닫기, 데이터베이스 연결 종료 등)와 같은 작업에 유용함.
  • 예외 메시지를 사용자에게 명확하게 전달하거나 로깅하여 문제의 원인을 쉽게 파악할 수 있도록 해야함.

정리

  • Java에서 예외 처리는 프로그램이 예기치 않게 종료되는 것을 방지하고, 오류를 안전하게 처리하는 메커니즘.
  • try-catch-finally 구조를 사용하여 예외를 처리하고, 필요시 throws를 통해 예외를 호출자에게 전파할 수 있음.
  • 좋은 예외 처리는 오류를 최소화하고, 프로그램의 안정성을 높이는 데 기여함.

TIP

*** 다중 예외 처리 간소화 (Multi-catch 사용)
    >>> 여러 종류의 예외를 한 번에 처리할 수 있습니다. 중복 코드를 줄일 수 있는 좋은 방법입니다.
*** try-with-resources 사용 (자원 자동 해제)
    >>> Java 7부터 제공되는 try-with-resources 구문을 사용하면, 
    finally 블록 없이도 자원을 자동으로 해제할 수 있습니다.
저작자표시 비영리 변경금지 (새창열림)

'JAVA' 카테고리의 다른 글

(JAVA) Wrapper 기본 개념 이해하기  (0) 2024.09.23
(JAVA) Generics 개념 이해하기  (0) 2024.09.20
(JAVA) 다중상속과 인터페이스 알아보기  (0) 2024.09.20
(JAVA) 추상클래스의 개념 + instanceof 이해하기  (0) 2024.09.20
(JAVA) 접근 제어자와 오버라이드 개념  (0) 2024.09.20
'JAVA' 카테고리의 다른 글
  • (JAVA) Wrapper 기본 개념 이해하기
  • (JAVA) Generics 개념 이해하기
  • (JAVA) 다중상속과 인터페이스 알아보기
  • (JAVA) 추상클래스의 개념 + instanceof 이해하기
lastdove
lastdove
lastdove 님의 블로그 입니다.
  • lastdove
    lastdove 님의 블로그
    lastdove
  • 전체
    오늘
    어제
    • 분류 전체보기 (80)
      • Spring (16)
      • JAVA (17)
      • JAVA 알고리즘 (20)
      • Project (5)
      • SQL 문제풀이 (17)
      • Git&Linux (2)
      • Web development(입문) (2)
      • Sparta (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
lastdove
(JAVA) 예외처리 알아가기
상단으로

티스토리툴바