본문 바로가기

공부 자료/Spring

[Spring MVC] 체크 예외(Checked Exception), 언체크 예외(Unchecked Exception)

체크 예외(Checked Exception)

: 발생한 예외를 잡아서(catch) 체크한 후에 해당 예외를 복구 하든가 아니면 회피 하는 등의 어떤 구체적인 처리를 해야 하는 예외

Ex) ClassNotFoundException 등

 

 

언체크 예외(Unchecked Exception)

: 예외를 잡아서(catch) 해당 예외에 대한 어떤 처리를 할 필요가 없는 예외를 의미하기에 명식적으로 잡아서 어떤 처리를 할 필요가 없음

Ex) NullPointException, ArrayIndexOutOfBoundsException 등

 

 

>> 대부분 개발자가 코드를 잘못 작성해서 발생하는 오류들은 RuntimeException을 상속한 예외들이며, Java나 Spring에서 수많은 RuntimeException을 지원해주지만 개발자가 RuntimeException을 이용해 직접 예외를 만들어야 하는 경우도 존재

 

 

[개발자가 의도적으로 예외를 던질 수 있는 상황]

1) 백엔드 서버와 외부 시스템과의 연동에서 발생하는 에러 처리

Ex) 내 계좌에서 돈을 상대방에게 전달하기 위해 백엔드 서버가 외부 시스템과 통신을 하는 과정에서 계좌 잔고가 부족할 경우 프로세스가 중단됨

>> 이 경우에는 백엔드 서버에서 시도할 수 있는 것이 없기 때문에 계좌에 돈이 없다는 사실을 알려 돈을 넣는 것이 최선의 방법이므로 클라이언트에 에러가 발생한 정보를 알려줌으로서 클라이언트가 조치를 취함

 

2) 시스템 내부에서 조회하려는 리소스(자원)가 없는 경우

Ex) B은행 계좌를 A은행으로 착각하고 해당 계좌에서 돈을 출금하려 할 경우 A은행에는 해당 계좌에 대한 정보가 존재하지 않기 때문에 정보가 없다는 예외를 의도적으로 전송해 클라이언트에게 알림