2024.10.04.금.TIL Exception

김기남·2024년 10월 4일
post-thumbnail

안녕하세요, 오늘은 Exception 에 대해 정리해 보았습니다.

예외 처리란?

예외 처리란 프로그램의 실행 중 발생할 수 있는 예기치 않은 오류를 다루는 방법입니다. 프로그램이 실행되는 과정에서 여러 가지 상황으로 인해 오류가 발생할 수 있으며, 이러한 오류는 프로그램의 정상적인 흐름을 방해할 수 있습니다. 따라서 예외 처리는 오류가 발생했을 때 프로그램이 중단되지 않고 적절히 대처할 수 있도록 해주는 중요한 기능입니다.

자바의 예외 계층 구조

자바에서 예외는 크게 두 가지로 나눌 수 있습니다: Checked Exception과 Unchecked Exception. Checked Exception은 컴파일 시 반드시 처리해야 하는 예외이며, Unchecked Exception은 런타임 시 발생할 수 있는 예외로, 반드시 처리하지 않아도 됩니다. 이를 이해하기 위해 다음 이미지를 참고하겠습니다.

이미지 출처

자바에서의 예외 처리 방법

자바에서 예외를 처리하는 가장 일반적인 방법은 try-catch 블록을 사용하는 것입니다. try 블록 안에는 예외가 발생할 수 있는 코드가 포함되며, catch 블록에는 해당 예외를 처리하는 코드가 들어갑니다. 또한, finally 블록을 사용하여 예외 발생 여부와 관계없이 항상 실행해야 할 코드를 작성할 수 있습니다.이러한 방식으로 프로그램의 흐름을 끊기지 않도록 할 수 있습니다.

예외 처리의 기법

예외 처리를 위해 사용할 수 있는 기법은 크게 세 가지로 나눌 수 있습니다. 첫 번째는 예외 복구입니다. 이는 예외가 발생했을 때 이를 해결하기 위한 방법을 제시하는 것입니다. 두 번째는 예외 처리 회피로, 예외를 처리하지 않고 다른 방법으로 우회하는 것을 의미합니다. 마지막으로 예외 전환이 있습니다. 이 방법은 예외가 발생한 경우 이를 다른 형태로 변환하여 처리하는 것입니다. 이와 관련된 이미지를 보시겠습니다.


이미지 출처

자주 발생하는 예외와 해결 방법

자바에서 자주 발생하는 예외로는 NullPointerException, ArrayIndexOutOfBoundsException 등이 있습니다. 이러한 예외들은 주로 잘못된 참조나 경계 초과로 인해 발생하게 되며, 이를 예방하기 위해서는 제대로 된 조건 검사를 통해 미리 방지해야 합니다. 예를 들어, 배열의 길이를 확인하고 인덱스를 접근하는 방법으로 해결할 수 있습니다.

예외 처리의 모범 사례

효율적인 예외 처리를 위해 몇 가지 모범 사례를 고려해 보겠습니다. 먼저, 모든 예외를 무조건 처리하는 것이 아니라, 반드시 처리해야 할 예외만 선택적으로 처리하는 것이 중요합니다. 또한, 예외의 원인을 정확히 파악하고 로그를 남겨 후속 조치가 가능하도록 해야 합니다. 마지막으로, 사용자에게 친절한 오류 메시지를 제공하여 문제를 쉽게 이해하고 해결할 수 있도록 도움을 주는 것이 좋습니다.

오늘의 코드카타

import java.util.Arrays;

class Solution {

    public int solution(int[] array) {
        int answer = 0;
        String str = Arrays.toString(array);
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == '7') {
                answer++;
            }
        }
        return answer;
    }
}
public class Main {

    public static void main(String[] args) {

        Solution solution = new Solution();

        int[] a1 = {7, 77, 17};
        int[] a2 = {10, 29};

        System.out.println(solution.solution(a1));
        System.out.println(solution.solution(a2));
    }
}

7의 개수

profile
새로운 시작~!

0개의 댓글