예외 처리란?
프로그램에서는 다양한 원인으로 인해 에러가 발생할 수 있다.
이러한 에러가 발생하더라도 프로그램의 안정성을 유지하기 위해 사전 대응하는 개념이 바로 예외 처리이며,
오류로 인한 비정상적인 종료를 방지할 수 있다.
Exception과 Error의 차이
넓게 보면, 프로그램을 실행하며 발생하는 모든 내부, 외부적 요인들로 인한 문제들을 에러라고 부를 수 있다.
하지만 에러와 예외는 다른 개념이며, 코드 실행(runtime)시 발생하는 유형으로 구분하면 차이점이 두드러진다.
에러: 복구하기 어려우며, 주로 프로그램의 종료를 야기하는 심각한 문제를 말한다.
예외: 개발자의 실수로 인해 발생하여 간단한 코드 수정만으로도 해결이 가능한 문제를 말한다.
자바에서 예외 처리 방법 (try, catch, throw, throws, finally)
블록 안에 예외가 발생할 가능성이 있는 코드를 작성하여 구현할 수 있다.
try / catch
try 블록 안에서 예외가 발생할 경우 실행된다.
코드가 정상이며, 예외를 작동시키지 않을 경우 catch 블록은 실행되지 않으며 블록이 종료된다.
finally
작성시 예외 발생 여부에 관계 없이 항상 실행된다. 단, 반드시 작성할 필요는 없다.
throws
예외를 전가하는 것을 말한다. 위의 try-catch 문 이외의 예외를 호출한 곳으로 다시 예외를 전가하게 된다.
작성 방법은 메서드 선언부의 끝에 throws 키워드를 넣어 발생 가능성이 있는 예외들을 쉼표로 구분하여 나열하는 것이다.
throw
의도적으로 예외를 발생시키는 것이다.
자바가 제공하는 예외 계층 구조
자바에서는 예외가 발생할 경우 ‘예외 클래스’로부터 객체를 생성하여, 해당 인스턴스를 통해 예외처리를 진행한다.
RuntimeException과 RE가 아닌 것의 차이는?
Runtime Exception:
런타임시 발생하는 RuntimeException 클래스와 그 하위 클래스들을 말한다.
컴파일러를 통한 사전 검사가 없기 때문에 Unchecked 예외라고 부른다. 클래스간 형 변환 오류, 배열 범위 오류 등이 있다.
Exception(일반 예외 클래스):
런타임 예외를 제외한 모든 Exception 및 그 하위 클래스들을 말한다.
코드를 실행하기에 앞서 컴파일러가 예외 처리 코드 유무를 검사하기 때문에 Checked(검사된) 예외라고 부르기도 한다. 보통 잘못된 클래스 명칭이나 데이터 형식 등 개발자의 실수에서 비롯된 경우가 많다.
'멋쟁이사자처럼 자바 백엔드 🦁 > 아기사자반' 카테고리의 다른 글
[아기사자반] 1차 과제: JVM과 자바 코드의 실행 방식 (0) | 2025.03.12 |
---|