프로그램 오류
- 프로그램이 실행 중 어떤 원이에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다.
- 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다.
1. 컴파일 에러
- 컴파일 시에 발생하는 에러
- 소스코드 컴파일 -> 컴파일러가 소스코드(*.java)에 대해 오타나 잘못된 구문, 자료형 체크 등의 기본적인 검사를 수행하여 오류가 있는지 알려줌 -> 에러들을 수정하여 클래스 파일(*.class) 생성
2. 런타임 에러
- 실행 시에 발생하는 에러
- 프로그램이 실행 중 독작을 멈춘 상태로 오랜 시간 지속 or 갑자기 프로그램이 실행을 멈추고 종료되는 경우
- 자바에서는 실행 시(runtime)발생할 수 있는 프로그램 오류를 '에러(error)'와 '예외(exception)' 두가지로 구분
- 에러 : 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError) -> 발생하면 복구할 수 없는 심각한 오류
- 예외 : 발생하더라도 수습될 수 있는 비교적 덜 심각한 것이다.
3. 논리적 에러
- 실행은 되지만, 의도와 다르게 동작하는 것
- 창고의 재고가 음수가 된다던가, 게임 프로그램에서 비행기가 총알을 맞아도 죽지 않는 경우
예외 클래스의 계층구조
- Exception과 Error클래스 역시 Object클래스의 자손들
- 모든 예외의 최고 조상은 Exception클래스
- 상속계층도(Exception클래스부터 도식화)
- Exception클래스와 그 자손들 - 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
- RuntimeException클래스와 그 자손들 - 프로그래머의 실수로 발생하는 예외
예외처리하기 - try-catch문
예외처리(exception handling)
정의 : 프로그램 실행 시 발생할 수 있는 예외에 대비한 코드를 작성하는 것
목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것
- 발생한 예외를 처리하지 못하면, 프로그램은 비정상적으로 종료되며, 처리되지 못한 예외(uncaught exception)는 JVM의 '예외처리기(UncaughtExceptionHandler)'가 받아서 예외의 원인을 화면에 출력
public class ExceptionEx3 {
public static void main(String[] args) {
int number = 100;
int result = 0;
for(int i = 0; i<10; i++) {
try {
result = number / (int)(Math.random() * 10);
System.out.println(result);
}catch(ArithmeticException e) {
System.out.println("0");
}
}
}
}
'JAVA개념' 카테고리의 다른 글
StringBuffer클래스의 생성자와 메서드 (0) | 2021.12.01 |
---|---|
StringBuffer의 비교 (0) | 2021.11.30 |
메서드를 사용하는 이유 (0) | 2021.11.28 |
JVM의 메모리 구조 (0) | 2021.11.28 |
클래스와 객체 (0) | 2021.11.28 |