들어가며,
우아한 테크 코스를 진행하며 예외처리를 자주 쓰게 되었다. 그런데 헷갈리는 개념을 발견했다. try-catch 문과 throw 문 이였다. 우테코 1주차에선 예외처리를 모두 throw문을 사용하여 끝낸 뒤 PR를 날렸다. 그리고 " try-catch 문의 예외처리가 아닌 , 메서드로 예외를 떠넘겼을 경우에 장단점을 말씀해주실 수 있나요? " 라는 리뷰를 받았다. 솔직히 답하지 못하였다. 그래서 그 개념을 정리해보고자한다.
Try-catch 문이란?
Try-catch문은 예외를 처리하기 위한 구문이다.
try {
//예외발생할 가능성이 있는 문장
}catch(Exception1 e1) {
//Exception1이 발생했을 경우, 이를 처리하지 위한 문장적는다.
//보통 이곳에 예외메세지를 출력하고 로그로 남김.
}catch(Exception2 e2) {
//Exception2이 발생했을 경우, 이를 처리하지 위한 문장적는다.
}catch(ExceptionN eN) {
//ExceptionN이 발생했을 경우, 이를 처리하지 위한 문장적는다.
}finally{
//예외발생여부에 관계없이 상항 수행되어야 하는 문장적는다.
}
예외 발생시 try->catch->finally 순으로, 발생 하지 않은 경우 try->finally 순으로 실행된다.
예외가 try 블럭에서 발생한 경우
- 발생한 예외와 일치하는 catch 문이 있는지 확인.
- 일치하는 catch 문이 있다면 catch 블럭 내의 문장을 모두 실행하고 try catch 문을 빠져나가서 그다음 문장을 수행.
- 일치하는 catch 문이 없다면 예외는 처리되지 못하고 에러 발생.
예외가 try 블럭 안에서 발생하지 않은 경우
- catch블럭을 거치지 않고 전체 try-catch문을 빠져나가서 수행을 계속한다.
- 예외가 try 블럭 밖에서 발생한 경우
- 예외는 아무 처리되지 못한 채 에러 발생.
'개발일지 > Java & Springboot' 카테고리의 다른 글
[SpringBoot] 빌더 패턴이란? @Builder (0) | 2024.02.01 |
---|---|
JDBC, MyBatis, JPA 의 차이 (1) | 2023.12.04 |
[Spring] Spring Boot, REST API, Oracle, MyBatis, Mapper, DTO 간의 상관관계(?) (0) | 2023.11.10 |
[Java] POJO란 무엇일까? (0) | 2023.11.10 |
[Spring] DAO(Data Access Object) 란 무엇인가... (0) | 2023.11.08 |