[JAVA]예외(Exception) vs 에러(Error)

2024. 9. 21. 20:47·Language/JAVA

예외(Exception)

정의: 예외는 프로그램이 실행되는 동안 발생할 수 있는 예상 가능한 문제를 의미한다. 예외는 개발자가 미리 처리할 수 있는 상황을 의미하고, 코드로 복구하거나 처리할 수 있다.

주요 예시: 파일을 찾을 수 없거나, 배열의 범위를 벗어난 접근, 숫자를 0으로 나누는 것 등이 예외로 처리된다.

처리 방법: try-catch 블록을 통해 예외를 처리할 수 있고, 필요하면 throws를 통해서 다시 던질 수도 있다.

예외(Exception)의 종류

체크 예외(일반 예외) 언체크 예외(실행 예외)
컴파일 시점에 확인되고 반드시 처리해야 하는 예외이다.
예를 들어, IOException, SQLException 등이 있다.
런타임에 발생하며, 주로 프로그래머의 실수나 로직 오류로 발생하는 예외로 컴파일러가 체크하지 않는 예외이다. 예를 들어, NullPointerException, ArrayIndexOutOfBoundsException 등이 있다.

언체크 예외와 체크 예외를 구별하는 가장 쉬운 방법은 예외가 RuntimeException 클래스를 상속하는지 여부를 보는 것이다. 이 기준으로 구분하면 RuntimeException 클래스를 상속하는 예외는 언체크 예외이다.

//throws 사용
import java.awt.Toolkit;
public class SleepExample {

	public static void main(String[] args) throws InterruptedException {
		Toolkit toolkit=Toolkit.getDefaultToolkit();
		for(int i=0;i<5;i++) {
			toolkit.beep();
			Thread.sleep(3000);
		}
	}
}

//try-catch 사용
import java.awt.Toolkit;
public class SleepExample {

	public static void main(String[] args){
		Toolkit toolkit=Toolkit.getDefaultToolkit();
		for(int i=0;i<5;i++) {
			toolkit.beep();
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {}
		}
	}
}
public class UncheckedExceptionExample {
    public static void main(String[] args) {
        String str = null;
        
        // 예외 처리를 하지 않으면 런타임에 NullPointerException 발생
        System.out.println(str.length()); // str이 null이기 때문에 예외 발생
    }
}

에러(Error)

정의: 에러는 주로 시스템 레벨에서 발생하는 심각한 문제를 의미한다. 에러는 보통 JVM이 처리할 수 없는 상황에서 발생하며, 개발자가 예측하거나 복구하기 어렵다.

주요 예시: 메모리 부족(OutOfMemoryError), 스택 오버플로우(StackOverflowError) 등이 있다.

처리 방법: 에러는 일반적으로 try-catch로 처리하지 않고, 프로그램이 종료되는 경우가 많다. 에러는 개발자가 해결할 수 없는 문제로 간주된다.

'Language > JAVA' 카테고리의 다른 글

[JAVA]정적 메소드에서 this를 사용할 수 없는 이유  (2) 2024.11.03
[JAVA]Runnable 인터페이스를 구현해서 스레드를 만드는 이유  (0) 2024.09.28
[JAVA]currentThread()  (0) 2024.09.21
[JAVA]문자열 상수 풀(String Pool)  (0) 2024.09.08
[JAVA]equals() vs ==  (0) 2024.09.08
'Language/JAVA' 카테고리의 다른 글
  • [JAVA]정적 메소드에서 this를 사용할 수 없는 이유
  • [JAVA]Runnable 인터페이스를 구현해서 스레드를 만드는 이유
  • [JAVA]currentThread()
  • [JAVA]문자열 상수 풀(String Pool)
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[JAVA]예외(Exception) vs 에러(Error)
상단으로

티스토리툴바