inblog logo
|
송승현의 블로그
    기술정리

    [기술정리]예외 처리

    송송승현's avatar
    송송승현
    Nov 21, 2024
    [기술정리]예외 처리
    Contents
    정의기본 개념예외의 종류예외처리 메커니즘

    정의

    💡
    프로그램 실행 중 예상치 못한 오류가 발생했을 때 , 프로그램의 비정상적인 종료를 막고 적절한 대응을 위한 방법
    오류가 발생했을 때의 처리 로직을 명확하게 정의할 수 있으며, 이를 통해 사용자 경험을 개선하고 시스템의 안정성을 높임

    기본 개념

    💡
    예외(Exception) - 프로그램 실행 중 발생할 수 있는 오류나 비정상적인 상황
    예외 처리(Exception Handling) - 예외가 발생했을 때 이를 적절히 처리하여 프로그램이 정상적으로 실행될 수 있도록 하는 방법

    예외의 종류

    • 예외는 일반적으로 Checked Exception과 Unchecked Exception으로 분류

    Checked Exception

    • 컴파일 타임에 검사되는 예외
    • 컴파일 시에 반드시 처리되거나 선언되어야 함
    • 개발자는 이러한 예외가 발생할 가능성이 있는 코드 무조건적 예외 처리를 해야함
    • 주요 예시
      • IOException : 파일 입출력 작업에 발생할 수 있는 예외
      • SQLException : 데이터베이스 작업 중 발생할 수 있는 예외
      • ClassNotFoundException : 클래스가 로드되지 않을 때 발생하는 예외

    Unchecked Exception

    • 런타임 시에만 검사되는 예외로, 컴파일 타임에는 확인되지 않음
    • 주로 프로그래밍 오류에서 발생, 개발자가 명시적으로 처리하지 않아도 상관X
    • RuntimeException을 상속받는 예외들이 해당
    • 주요 예시
      • NullPointException : 객체가 null인 상태에서 메서드를 호출하려고 할 때 발생
      • ArrayIndexOutOfBoundsException : 배열의 잘못된 인덱스에 접근할 때 발생
      • ArithmeticException : 0으로 나누기와 같은 수학적 오류가 발생할 때 발생

    Error

    • 예외외는 다르며, 주로 JVM에서 발생하는 심각한 오류를 의미
    • 보통 애플리케이션에서 복구할 수 없는 상황을 나타냄
    • 주요 예시
      • OutOfMemoryError : JVM 메모리가 부족할 때 발생
      • StackOverflowError : 재귀 호출이 너무 깊어져서 스택이 가득 찼을 때 발생
     

    예외처리 메커니즘

    예외 직접처리

    • 발생항 예외를 메서드 내에서 try-catch 블록을 사용하여 처리하는 방식
    • 예외가 발생한 시점에서 즉시 예외를 처리하여 프로그램 흐름을 제어
    • try-catch
      • try : 예외가 발생할 수 있는 코드를 감싼다. → try 블록 내에서 예외가 발생하면 catch 블록에서 처리
      • catch : try블록 내에서 발생한 예외를 처리, 여러개의 catch블록을 사용하여 다양한 예외를 처리할 수 있음
      • finally(선택) : 예외 발생 여부와 상관없이 항사 실행되어야하는 코드
    • throw
      • throw : 예외를 명시적으로 발생시킬 때 사용
    • 장점
      • 예외를 발생한 지점에서 즉시 처리하여 코드의 흐름을 간단하게 유지 가능
    • 단점
      • 중복된 예외 처리 코드가 여러 곳에 분산될 수 있음
      • 예외를 적절하게 처리하지 않으면 코드의 가독성이 저하
    • 예제
      • public void readFile(String fileName) { try { FileReader file = new FileReader(fileName); BufferedReader fileInput = new BufferedReader(file); for (int counter = 0; counter < 3; counter++) System.out.println(fileInput.readLine()); fileInput.close(); } catch (IOException e) { System.out.println("예외 발생: " + e.getMessage()); } }

    예외 던지기

    • 예외 던지기는 메서드 내에서 예외를 직접 처리하지 않고, 호출한 메서드나 싱위 호출자에게 예외를 전달하는 방식
    • 메서드 시그니쳐에 throws 키워드를 사용하여 예외를 선언, 필요한 경우 throw 키워드 사용
    • 장점
      • 예외 처리를 호출자에게 위임하여 코드의 책임을 분리
      • 공통된 예외 처리를 중앙에서 관리 가능
    • 단점
      • 예외가 전파될 경우 예외 처리가 지연될 수 있음
      • 호출자에게 예외 처리를 강제할 수 있음
    • 예제
      • public void readFile(String fileName) throws IOException { FileReader file = new FileReader(fileName); BufferedReader fileInput = new BufferedReader(file); for (int counter = 0; counter < 3; counter++) System.out.println(fileInput.readLine()); fileInput.close(); } public void processFile() { try { readFile("example.txt"); } catch (IOException e) { System.out.println("예외 발생: " + e.getMessage()); } } public void readFile(String fileName) throws IOException { FileReader file = new FileReader(fileName); BufferedReader fileInput = new BufferedReader(file); for (int counter = 0; counter < 3; counter++) System.out.println(fileInput.readLine()); fileInput.close(); } public void processFile() { try { readFile("example.txt"); } catch (IOException e) { System.out.println("예외 발생: " + e.getMessage()); } }
    Share article
    Contents
    정의기본 개념예외의 종류예외처리 메커니즘

    송승현의 블로그

    RSS·Powered by Inblog