티스토리 뷰
★ Exception Handling 이란?
- 작성한 코드가 실행 도중에 어떠한 원인에 의해 오작동하거나 비정상적으로 종료가 되는 경우가 있다.
이러한 결과를 초래한 원인을 ' 프로그램 오류' 라고 한다.
오류는 발생시점에 따라 크게 2~3가지로 나눌 수 있다.
1. 컴파일 오류 (Compile-time error)
소스 코드의 컴파일 과정에서 발생하는 오류
ex) Syntax Error(문법 오류)
2. 런타임 오류(runtime error)
문법은 맞았으나, 실행 과정에서 발견(확인)되는 오류
ex) Shark s = (Shark) new Animal( )
ex) HTTP 요청 시 "Post" → "POST"
3. 논리적 오류(logical error)
문법도 맞고, 실행 과정에서의 에러도 없으나 논리가 틀려서 발생하는 오류.
ex) 사람의 나이가 음수 값으로 설정
자바에서는 실행 시 (runtime) 발생할 수 있는 프로그램 오류를 '에러(error)' 와 '예외(exception)' 로 구분한다.
에러(Error) - 시스템 레벨에서 발생, 심각한 문제
일단 발생하면 복구가 어렵다.
ex ) 메모리 부족, 스택 오버 플로 등
예외 (Exception) - 개발자의 코드에서 발생, 예방 가능
발생하더라고 수습될 수 있음. 비교적 덜 심각함.
ex) NullPointerException.java → 모든 예외는 클래스 객체임
예외 종류

Exception 클래스 : 모든 예외의 최상위 클래스
Exception 클래스는 다음과 같이 두 그룹으로 나누는 편.
- Exception 클래스와 그 하위 클래스들.
- RuntimeException 클래스와 그 하위 클래스들(NullPointer, ClassCast, IndexOutOfBounds..)
RuntimeException을 제외한 일반 Exception 클래스(위에서 1번)들은 주로 외부의 영향으로 발생함.
ex) 해당 프로그램을 사용하는 사용자들의 동작에 의해 존재하지 않는 파일의 이름을 입력, 회원가입 시 잘못된 데이터 입력 등.
RuntimeException은 주로 프로그래머의 실수에 의해 발생.
NullPointer, IndexOutOfBounds 등
☆ 예외 클래스
예외는 클래스로 관리됨
코드의 실행 도중에 예외가 발생하면 발생한 예외에 대한 설명 및 로그(기록)를 담고 있는 예외 클래스 객체를 생성함.
☆ 발생한 예외의 처리 : try - catch
예외 처리(Exception handling)란 프로그램 실행 과정에서 발생할 수 있는 예상치 못한 예외의 발생에 대처가 가능한 코드를 작성하는 것을 의미함.
따라서 프로그램의 비정상적인 종료를 막고, 정상적인 실행을 계속 유지하도록 하기 위함.
try {
//예외가 발생할 가능성이 보이는 코드를 작성
Audio a = new Audio();
Bts b = null;
a.musicPlay(b); // CD를 재생했는데 음악이 안나오네
} catch (LpEmptyException e1) {
// Lp에 음악이 하나도 없을 때 처리하기 위한 코드 작성
} catch (MusicDuplicateException e2) {
// 같은 음악이 2개 이상 있을 때 처리 코드 작성
} catch (Exception e){
//위의 예외를 제외한 나머지 모든 예외를 잡고싶을 때
}
}
하나의 try block에는 여러 종류의 예외 처리가 가능하도록 catch block들을 작성할 수 있으며,
만약 이 예외에 해당하지 않는 또 다른 예외를 마주쳤을 경우 예외는 처리되지 않음.
(Kpop Lp를 재생했는데 Jpop이 재생될 경우 등)
Tip. if문과는 다르게 try, catch block는 실행 문장이 한 줄이어도 { }를 생략할 수 없음.
☆ finally block
finally block이란 try-catch문과 함께 사용되며 예외의 발생 여부에 상관없이 무조건 실행되어야 할 코드를 포함시킬 때 사용됨.
try-catch문의 끝에 선택적으로 덧붙여서 사용할 수 있음.
try {
//예외가 발생할 가능성이 있는 코드
} catch(Exception e1){
// 예외처리를 위한 코드
} finally {
//예외 발생여부에 관계 없이 항상 수행되어야 하는 코드
}
따라서 finally는 무조건 실행되기 때문에
예외가 발생한 경우에는 'try → catch → finally' 순으로,
예외가 발생하지 않은 경우에는 'try → finally'순으로 실행됨.

'차곡차곡 > Java' 카테고리의 다른 글
| [Java] 예외 처리 - Exception 인스턴스에 따라 예외 처리 (0) | 2022.05.15 |
|---|---|
| [Java] 예외 처리하기 - Try-catch문 사용하기 (0) | 2022.05.15 |
| [Java] 인터페이스 - 인터페이스의 다형성 (0) | 2022.05.15 |
| [Java] 인터페이스 - 인터페이스의 역할 (0) | 2022.05.15 |
| [Java] 추상 클래스 - (1) 추상 클래스 (0) | 2022.05.15 |
- Total
- Today
- Yesterday
- JPQL이란
- 엘리먼트 렌더링
- 엔티티매니저팩토리
- fragment태그
- react counter
- JPA애플리케이션개발코드
- 리액트 이벤트 처리하기
- React를 이용한 Counter 만들기
- DDL 생성 콘솔 출력
- 풍기역맛집
- JPA라이브러리
- Counter 만들기
- JPA
- 영주 한우
- 토마호크 맛집
- intellij 한글 깨짐
- 콘솔 창 한글 깨짐
- 영속성 관리
- 데이터베이스 스키마 자동 생성
- React
- JPA 기본키 매핑 전략
- 꾸덕꾸덕 파스타 맛집
- 로제 파스타 맛집
- 버튼누르면전구이미지변하기
- 온량 서울숲점
- tick 만들기
- 커틀렛 맛집
- 영주역 맛집
- 리액트 엘리먼트 렌더링하기
- pip 설치 오류
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
