Backend · Infra

Error 와 Exception

devhyen 2024. 7. 11. 08:44

 

Error와  Exception은 둘 다 프로그램 실행 중 발생할 수 있는 문제를 나타내지만,
그 의미와 처리는 다르다.

 

 

https://www.baeldung.com/java-errors-vs-exceptions

 

Error

보통 JVM(Java Virtual Machine) 수준에서 발생하는 심각한 문제로, 애플리케이션 코드에서 직접 처리하기 어려운 경우가 많다. 

 

  • OutOfMemoryError

JVM에 메모리가 부족할 때 발생

 

  • StackOverflowError

너무 많은 메서드 호출로 인해 호출 스택이 오버플로우될 때 발생

 

  • NoClassDefFoundEerror

필요한 클래스를 찾을 수 없을 때 발생

 

원인

 시스템 레벨에서 발생하는 문제, 메모리 부족, 스택 오버플로우 등과 같은 문제로 인해 발생하게 된다.

 

처리

 Error는 프로그램이 정상적으로 계속 실행되기 어려운 상황이기 때문에 일반적으로 이런 문제를 코드에서 복구하거나 처리하지 않는다. 일반적으로 로그를 남기고 프로그램을 종료하는 것이 가장 좋은 조치 방법 이다.

 

Exception

프로그램 실행 중 예외적인 상황이 발생했을 때 던져지는 객체
이 상황은 코드에서 예측하고 처리할 수 있다.

 

  • Checked Exception
public class ErrorExceptionExample {

    public static void main(String[] args) {
        try {
            	// Checked Exception 예시
                throw new IOException("Checked Exception 발생");
            } catch (IOException e) {
            	System.out.println("Checked Exception 처리: " + e.getMessage());
            }
     }
}

  컴파일 시점에 체크되는 예외로, IOException, SQLException 등이 있습니다. 이러한 예외는 반드시 try-catch 블록으로 처리하거나 메서드 시그니처에 throws 키워드로 선언해야 합니다.

 

  • Unchecked Exception
public class ErrorExceptionExample {

    public static void main(String[] args) {
        try {
            // Unchecked Exception 예시
            throw new NullPointerException("Unchecked Exception 발생");
        } catch (NullPointerException e) {
            System.out.println("Unchecked Exception 처리: " + e.getMessage());
        }
     }
}

 런타임 시점에 발생하는 예외로, RuntimeException을 상속받는 예외들입니다. NullPointerException, ArrayIndexOutOfBoundsException 등이 있습니다. 이러한 예외는 명시적으로 처리하지 않아도 됩니다.

 

 

원인

 잘못된 사용자 입력, 파일 입출력 오류, 네트워크 오류 등 다양한 원인으로 인해 발생할 수 있다.

 

처리

 Exception은 try-catch 블록을 사용하여 프로그램이 비정상적으로 종료되지 않도록 처리할 수 있다. 예외 상황에 대한 적절한 대처를 통해 프로그램의 안정성을 높일 수 있다.

 

 

'Backend · Infra' 카테고리의 다른 글

[Spring] DI : Dependency Injection  (0) 2024.07.15
[Java] 추상 클래스와 인터페이스의 차이  (0) 2024.07.12
[ElasticSearch] nested Type  (0) 2024.07.10
[ElasticSearch] Query  (0) 2024.07.09
싱글톤 패턴 Singleton Pattern  (0) 2024.07.09