˖˚˳⊹ public class Hohee ˚ ₊‧✧

[Java] 예외처리 try-catch & throw 본문

Development/JAVA & Spring

[Java] 예외처리 try-catch & throw

최호희 2023. 11. 22. 21:59

들어가며,

우아한 테크 코스를 진행하며 예외처리를 자주 쓰게 되었다. 그런데 헷갈리는 개념을 발견했다. 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 블럭에서 발생한 경우

  1.  발생한 예외와 일치하는 catch 문이 있는지 확인. 
  2.  일치하는 catch 문이 있다면 catch 블럭 내의 문장을 모두 실행하고 try catch 문을 빠져나가서 그다음 문장을 수행.
  3.  일치하는 catch 문이 없다면 예외는 처리되지 못하고 에러 발생.

예외가 try 블럭 안에서 발생하지 않은 경우

  • catch블럭을 거치지 않고 전체 try-catch문을 빠져나가서 수행을 계속한다. 

 

- 예외가 try 블럭 밖에서 발생한 경우

  1.  예외는 아무 처리되지 못한 채 에러 발생.

 

 

 

 

 

 

 

 


참고 자료 블로그: https://create-drop.tistory.com/entry/Java-javalangIllegalArgumentException-%ED%95%B4%EA%B2%B0%EB%B2%95

https://cheershennah.tistory.com/147