[엉박사] 1.10.3 Exception Handling

impala·2023년 1월 12일
0
post-thumbnail

1.10.3 Exception Handling

프로젝트 막바지에 지금까지 구현한 기능들을 데모 데이터로 테스트해보았다. 그런데 서버를 개발할 때 정상적인 요청만을 생각하면서 코드를 작성했더니 잘못된 요청이 올 경우 ZeroDivisionError등으로 서버가 HTTP 500 Internal Server Error에러를 보내버리는 상황이 있었다.

이번 프로젝트 전까지는 진행했던 프로젝트의 수준이 그렇게 높지 않아 프로그램이 항상 원하는 대로 동작하게 만들 수 있었는데, 이번 프로젝트를 통해 처음으로 웹 서비스를 개발해보고 사용자에게 다양한 입력을 받아보니 서비스 안정성의 측면에서 예외처리가 얼마나 중요한 것인지 알게 되었다. 그래서 파이썬에서 예외를 처리하는 방법에 대해 간단하게 정리하였다.

Exception Handling

안정적인 서비스를 위해서는 예외처리가 필수적이다. 특히 웹 서비스에서는 사용자가 어떤 요청을 보낼지 모르고, 해커가 서비스를 마비시키기 위해 악의적인 요청을 보낼 수도 있기 때문에 예외처리를 통해 내가 계획한대로 서비스가 동작하게 해야 한다.

파이썬에서 예외를 처리하는 기본적인 틀은 다음과 같다.

try:
    # 에러가 발생할 가능성이 있는 코드
except 에러종류 :
    # 에러가 발생한 경우 실행하는 코드
    pass            # 에러 회피
    raise 에러종류  # 의도적으로 에러를 발생
else : 
    # 에러가 발생하지 않았을 경우 실행하는 코드
finally : 
    # 에러 발생 여부에 관계없이 항상 실행하는 코드

파이썬에서 발생할 수 있는 예외의 종류는 다음과 같다

  • SyntaxError : 문법이 잘못된 경우
  • NameError : 참조변수가 없는 경우
  • ZeroDivisionError : 0으로 나누는 경우
  • IndexError : 인덱스의 범위를 벗어나는 경우
  • ValueError : 참조값이 없는 경우
  • KeyError : (주로 딕셔너리에서) 키값이 없는 경우
  • AttributeError : 모듈이나 클래스의 잘못된 속성을 사용하는 경우
  • FileNotFoundError : 찾는 파일이 없는 경우
  • TypeError : 타입이 맞지 않는 경우

위와 같은 방법으로 예상이 가능한 예외에 대한 처리를 구현하여 되도록이면 서버에서 클라이언트에게 HTTP 500 Internal Server Error와 같은 에러를 보내지 않도록 하는 것이 안정적인 서비스를 운영하는 데 도움이 된다.

0개의 댓글