본문 바로가기
카테고리 없음

2023-05-15 예외처리(프로젝트 코드 개선), 좋아요

by jung1911 2023. 5. 15.

프로젝트 코드 피드백

1. 코드의 예외 처리할 수 있는 부분을 찾아서 개선 하라는 피드백을 받았다.일단, 예외처리가 무엇인지 알아보고 개선하는게 좋을 것 같다.

 

예외처리

프로그램을 올바르게 동작하게 해주는 것

 

try: 

     수행 문장                                    👈 에러가 발생할 가능성이 있는 문장

except:

     에러 발생 시 수행 문장               👈 에러 상황이 발생했을 때만 수행할 문장

else:

     정상 동작 시 수행 문장               👈 에러가 발생하지 않았을 때만 수행할 문장

finally:

    마지막으로 수행할 문장               👈  에러 여부 상관 없이 항상 수행되는 문장

 

 

 

 

ex) 

1)num1 = 3, num2 = 0 

2)num1 = 3, num2 = 3 

try:

    result = num1/num2

    print(f"연산결과{result}")

except:

     print("에러 발생")

else:

     print("정상 동작")

finally:

    print("종료")

   

실행결과 

1) 에러 발생 , 종료

2) 정상 동작,  종료, 결과는 1.0

 

 

 

 

예외처리 4가지 사용

 

try: 는 except: 또는 finally: 와 함께 쌍을 이뤄야 한다.

에러가 발생하면 에러처리 용도로 사용

try:

   수행 문장

except:
    예외 처리
에러가 발생하면 에러처리 없이 마지막으로 수행할 문장으로 넘어간다.

try:
   수행 문장

finally:
    마지막 수행
에러가 발생하면 에러처리를,  에러가 발생하지 않는다면 정상 동작

try:

   수행 문장
except:
    에러처리
else:
     정상동작

에러가 발생하거나 말거나 수행을 한다.

try:

    수행 문장
except:
    에러처리
else:
    정상 동작
finally:
    마지막 수행

 

 

 

 

DRF 코드로 알아보기 (좋아요)

좋은 예시 코드 알아보기

# 게시글 좋아요 등록, 취소
class ArticleLikesView(APIView):
    permission_classes = [permissions.IsAuthenticated]
	#인증된 사용자만 접근
    def post(self, request, article_id):
        # 요청된 article_id를 가진 게시글을 찾는다.
        article = get_object_or_404(Article, id=article_id)

        try:
            # ArticleLikes 모델에서 해당 게시글과 현재 사용자에 대한 좋아요 정보를 가져온다.
            articlelikes = ArticleLikes.objects.get(article=article, user=request.user)
            
            # 좋아요 정보가 이미 존재하는 경우, 좋아요를 취소
            articlelikes.delete()

            # 좋아요 취소가 성공적으로 이루어졌다는 메시지와 함께 200 OK 상태 코드를 반환
            return Response({"message": "좋아요를 취소했습니다"}, status=status.HTTP_200_OK)

        except ArticleLikes.DoesNotExist: <- 에러가 발생했을 찾기 쉽다. 
            # 좋아요 정보가 존재하지 않는 경우, 새로운 좋아요 정보를 생성하여 등록
            articlelikes = ArticleLikes.objects.create(article=article, user=request.user)
            
            # 좋아요 등록이 성공적으로 이루어졌다는 메시지와 함께 200 OK 상태 코드를 반환
            return Response({"message": "좋아요를 눌렀습니다"}, status=status.HTTP_200_OK)

 

 

 

댓글