많은 이들이 한 번쯤은 들어봤을 법한 어구다.
필자도 익히 들어왔었는데, 아주 뜬금 없는 곳에서 다시 마주쳤다.
바로 파이썬 공식 문서에서...
사실 여차저차 stackoverflow 들락날락 하다가 여기까지 왔다 ㅎㅎ
뭔고하니, 일단 질러봐라. exception은 catch하게 하고.
파이썬의 이런 코딩 스타일을 알지는 못했지만,
어쩌다보니 이 글의 첫 예시 부분과 아귀가 맞아 떨어지더라...
이와 대비되는 코딩 스타일은 마지막에 나와있다.
LBYL라고 한다.
몰랐는데, if
문을 사용할 때 발생할 수 있는 race condition
을 해결하는 방법 중 하나로 EAFP를 꼽았다. 와웅
그럼
파이썬에서 모든 flow control을 try-except 문으로 처리해야 할까?
당근 아니다.
필자의 의견으로는,
else
문 내부에는 우리가 정상적인 flow로 간주하는 코드except
문 내부에는 발생해서는 안되는 상황을 처리하는 코드정도가 되겠다.
직접적인 예시를 들면,
어떤 API 서버에 get
요청을 보내고 response를 받는다고 치자.
respone의 status code
가 404
라면 어떻게 처리해야 할까?
당연히 if else
문으로? 혹은 try except
로?
애초에 db에 존재하지 않는 정보를 요청할 수 있는 상황이었다면 if else
db에 존재해야만 하는 정보를 요청한다만 try except
로 처리하는 것이 맞다.
물론 status code
를 보고 곧장 에러나 예외를 던져주는 기능은 직접 구현하든가 해야한다...
이 과정에서 중간에 if else
문이 들어갈 수 있겠지만, 예외가 던져져야 한다고 생각되면 예외를 던지는 것이 맞다.