프로젝트 코드 피드백
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)
댓글