예외(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 |