[Python3] 허락보다 용서가 쉽다

SangHun·2021년 5월 26일
0
post-thumbnail

많은 이들이 한 번쯤은 들어봤을 법한 어구다.

필자도 익히 들어왔었는데, 아주 뜬금 없는 곳에서 다시 마주쳤다.

공식문서

바로 파이썬 공식 문서에서...

사실 여차저차 stackoverflow 들락날락 하다가 여기까지 왔다 ㅎㅎ

뭔고하니, 일단 질러봐라. exception은 catch하게 하고.

파이썬의 이런 코딩 스타일을 알지는 못했지만,
어쩌다보니 이 글의 첫 예시 부분과 아귀가 맞아 떨어지더라...

이와 대비되는 코딩 스타일은 마지막에 나와있다.

LBYL라고 한다.
몰랐는데, if문을 사용할 때 발생할 수 있는 race condition을 해결하는 방법 중 하나로 EAFP를 꼽았다. 와웅


사견

그럼
파이썬에서 모든 flow control을 try-except 문으로 처리해야 할까?
당근 아니다.
필자의 의견으로는,

  • else 문 내부에는 우리가 정상적인 flow로 간주하는 코드
  • except 문 내부에는 발생해서는 안되는 상황을 처리하는 코드

정도가 되겠다.

직접적인 예시를 들면,
어떤 API 서버에 get 요청을 보내고 response를 받는다고 치자.
respone의 status code404라면 어떻게 처리해야 할까?
당연히 if else 문으로? 혹은 try except로?

애초에 db에 존재하지 않는 정보를 요청할 수 있는 상황이었다면 if else
db에 존재해야만 하는 정보를 요청한다만 try except로 처리하는 것이 맞다.

물론 status code를 보고 곧장 에러나 예외를 던져주는 기능은 직접 구현하든가 해야한다...
이 과정에서 중간에 if else문이 들어갈 수 있겠지만, 예외가 던져져야 한다고 생각되면 예외를 던지는 것이 맞다.

profile
개발괴발자

0개의 댓글