try라는 스택과 catch스택이 있는 이유는 프로그램은 컴파일 시 오류와 런타임 오류(클라이언트와 통신)가 있다. 기본적으로 웹서버는 웹서버 시 오류가 발생할 수 있다.
통신을 하는 코드는 전부다 try/catch로 묶어야 한다. 클라이언트랑 하는 것도 통신 db에 있는 데이터를 가져오는 것도 통신이다. 메모리에 있는 데이터를 하드에 저장하는 것도 통신이다.
위와 같이 통신이 있는 코드는 전부 try/catch로 묶어야 한다.
근데 스프링에선 파일을 리턴하는 컨트롤러와 데이터를 리턴하는 컨트롤러가 있는데 try/catch는 string데이터를 리턴한다. 결국 구조적으로 컨트롤러에서 Exception 처리를 할 수 없다. 프레임워크의 규칙 때문에 Exception처리를 할 수 없는 것이다. 그래서 스프링이 만들어준 기법이 있다.
위와 같이 오류가 났을대 저런 페이지가 뜨는 이유는 내부적으로 저런 페이지가 나오도록 짜져 있기 때문이다.
Exception처리
보통 Exception처리는 한 곳에 모아서 처리를 하는데 handler라는 이름을 많이 사용한다.
어떤 Exception이 발생할지 예측할 수 없기 때문에 제일 상위에 있는 Exception을 걸어준다.
그럼 이제 이 서버에서 생기는 모든 오류는 다 이 컨트롤러를 찾아오는 것이다.
위와같은 방식으로 하면 내부적으로 AOP가 돌아간다.
그래서 이렇게하면 오류가 터질때 마다 여기로 오게 할수 있는것이다.
@RestController를 붙여서 데이터를 리턴하는 경우도 있고
@Controller를 사용해서 에러 페이지를 리턴하도록 설계할 수도 있다.
'Springboot' 카테고리의 다른 글
인터셉터 처리 (0) | 2021.07.26 |
---|---|
visual studio code에서 Spring boot/JPA개발환경 설정 (0) | 2021.07.21 |
Spring boot/JPA 로 블로그만들기. 코멘트 기능 구현(댓글) (3) | 2021.07.19 |
자바스크립트 활용해서 스프링 서버 블로그에 수정(update)과 삭제(delete)해 보기 (0) | 2021.07.15 |
Springboot사용해서 블로그 만들기 글쓰기기능(summernote에디터사용) 추가와 상세보기 페이지(삭제,수정) 회원정보 변경 (0) | 2021.07.07 |