[python] 다중 except 절의 작성 순서 중요성

예를 들어, 다음과 같이 여러 예외를 처리하는 다중 except 절이 있다고 가정해보자.

try:
    # some code that may raise different exceptions
except ValueError:
    # handle ValueError
except ZeroDivisionError:
    # handle ZeroDivisionError
except TypeError:
    # handle TypeError
except Exception as e:
    # handle any other exception

이 예제에서 ValueError, ZeroDivisionError, TypeError 및 다른 모든 예외에 대해 처리 절이 순서대로 나열되어 있다.

그러나 만약 ZeroDivisionErrorValueError보다 앞에 나오면, ZeroDivisionError가 더 일반적인 Exception보다 앞에 나오면 어떻게 될까?

except 절은 순서에 영향을 받는데, 예외가 발생했을 때 코드는 위에서 아래로 각 except 절을 확인하고, 첫 번째로 일치하는 예외 처리 절을 실행한다.

따라서, 보다 구체적인 예외 처리 절을 보다 일반적인 예외 처리 절 앞에 위치시키는 것이 중요하다. 따라서, 위의 예제에서 except Exception as e와 같은 보다 일반적인 예외 처리 절은 가장 마지막에 위치시키는 것이 좋다.

이렇게 하면 각 예외에 대한 보다 특화된 처리가 가능하고, 일반적인 예외 처리는 마지막에 위치해서 어떤 예외에도 일치하지 않을 경우에 실행된다.

따라서, 다중 except 절을 작성할 때는 순서를 신중하게 고려하여 가장 구체적인 예외 처리 절을 먼저 나열하는 것이 중요하다.