예외란?
예외는 Checked Exception 와 Unchecked Exception 크게 두 가지로 나뉘게 된다
그리고 예외와는 별개로 오류(error)가 있다.
오류란?
컴퓨터 하드웨어의 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 자바에서는 에러라고 한다
시스템 레벨에서 발생하는 비정상적인 행위이기 때문에 이름 미리 예측해서 막을 수도 신경 쓸 필요도 없다
그렇다면 예외란 무엇일까?
개발자가 로직을 잘못 짜거나 혹은 사용자가 잘못된 값을 넘겨 정상적은 프로그램 흐름에서 벗어나는 행위를 말한다
그래서 미리 예측해서 예외를 잡을 수 있다.
Checked Exception vs Unchecked Exception
RuntimeException 를 상속받는 예외는 Unchecked Exception이며,
반대는 Checked Exception를 의미한다.
예외
|
Checked Exception
|
Unchecked Exception
|
정의
|
Exception의 상속을 받는 하위 클래스 중 RuntimeException을 제외한 모든 Exception
|
RuntimeException을 상속받는 Exception
|
처리 여부
|
반드시 예외 처리를 해야 함
|
명시적인 처리를 강제하지 않음
|
확인 시점
|
컴파일 단계
|
실행단계
|
트랜잭션 여부
|
예외 발생 시 롤백(rollback) 진행하지 않음
|
예외 발생 시 롤백(rollback) 진행
|
컴파일러가 에러 처리를 확인하지 않는 RuntimeException 클래스들은 unchecked 예외라고 부르고
예외 처리를 확인하는 Exception 클래스들은 checked 예외라고 부른다.
예외 처리 방법
1. try-catch finally 직접 처리 방식
try{
예외의 발생이 예상되는 로직
}catch(예외 클래스 인스턴스){
예외가 발생했을 때 실행되는 로직
}finally{
예외 여부와는 관계없이 실행되는 로직 ( 항상실행 / 생략가능 )
}
2. throws 간접 처리 방식
// 예외 떠넘기기
리턴타입 메소드명(매개변수,...)throws 예외클래스1, 예외클래스2, ...{}
throws 키워드가 붙어있는 메서드에서 해당 예외를 처리하지 않고,
떠넘겼기 때문에 이 메서드를 호출하는 곳에서 예외를 받아 처리해야 한다
3. throw 예외 발생
public void add() throws Exception{
throw new Exception("예외처리 발생")
}
강제로 예외 처리를 발생하는 방법
4. 사용자 정의 예외
checked로 할 것인가 unchecked로 할 것인가를 정해야 함
'JAVA' 카테고리의 다른 글
[Java] String 문자열 타입 (0) | 2024.05.04 |
---|---|
[Java] 데이터 타입 분류 (0) | 2024.05.04 |
[Java] 제네릭 (0) | 2024.05.04 |
[Java] 확장 for 문 (0) | 2024.05.04 |
[Java] 상수와 enum (0) | 2024.05.04 |