TIL(23-01-02)

allnight5·2023년 1월 2일
0

TIL

목록 보기
29/55
  1. 오늘 내가 한것을 @RestControllerAdvice를 이용한 전역처리가 아닌 AOP를 이용하여 예외처리를 해보는 것이었다.

처음에 해본 방식

    @Around(value = "execution(public * com.sparta.team7_project.presentation.controller.PostController.updatePost(..))")
    public Object updatePostException(ProceedingJoinPoint joinPoint)throws Throwable {
        try{
            Object output = joinPoint.proceed();
            return output;
        }catch (IllegalArgumentException e) {
            return new MessageResponseDto(e.getMessage(), 400);
        }
    }

이렇게 하면 문제가.. 그 메소드에서 정해준 리턴형식으로 보내줘야한다.
이렇게 이런형식의 Dto면 상관없지만 보내주는것이 entity나 다른형식이라면 해줄수없다.

두번째에 한방식

	@Pointcut(value = "execution(public * com.sparta.team7_project.presentation.controller.PostController.updatePost(..))")
    public void TestPoine(){}
    
    @AfterThrowing(pointcut = "TestPoine()", throwing= "exception")
    public synchronized Object excute(ProceedingJoinPoint joinPoint, Exception exception) throws Throwable{
        try{
            Object output = joinPoint.proceed();
            return output;
        } catch (IllegalArgumentException e){
            return new MessageResponseDto(e.getMessage(), 400);
        }
    }

어.. 처음에 joinPoint없이 했더니 @AfterThrowing가 어떠한 것이 시작했을때인지 찾지못한다..내가 리턴값을 이상한것을 준것 같기도 하고..막상 고치다 보니 결국 첫번째내용이다..

어찌되었든.. 두개다 직접 예외처리를 강제 발생시키는건 가능하나 직접적인 예외처리 Dto를 만들어서 처리하는것은 무리가 있어보인가 한번 내일 튜터님께 여쭤봐야겠다.

  1. 우와 강제푸쉬했더니 브랜치작업처럼 한게 다날아갔다.. 앞으로는 어려움이 있어도 방법을 찾아서 다르게 push작업을해야겠다. 그래도 못넣은거 읽어보면서 넣고 복구 하는데 성공했다. git을 함부러 쓰지 말자.. 이번으로 큰 깨달음을 얻었다.
profile
공부기록하기

0개의 댓글