예외 처리 변경된 부분(2.4에서 2.6으로)

예외 처리 부분을 공부하면서 많은 것이 바뀌었다는 것을 알았다.

먼저, 2.5 부터는 try, except, else, finally 를 모두 같이 사용할 수 있게 되었다.

이에 관해 자세한 것은 아래 링크를 참조하면 된다.

PEP 341: Unified try/except/finally


그리고 except 를 사용할 때 예외 값을 전달하기 위해 콤마를 사용 했는데, 이 부분에서 콤마가 아닌 as 를 사용하는 것으로 바뀌었다. 책에 나와 있는 예제(p.481) 를 바꾸면
try :
    f()
except Exception as a :
    ...
로 바뀌었다. 2.6 까지는 콤마와 as 를 모두 혼용 사용 가능하지만 3.0 부터는 as 만 사용이 가능하다.

위와 같이 바뀐 이유는 아래 달아둔 링크를 참조하면 되는데, 위 예문을 사용하면
try :
    f()
except (Exception, a) :
    ...
도 잘 작동한다는 것이다. 즉, except 구문에서 Exception, a 나 (Exception, a) 모두 같은 의미이다.

그런데 만약 링크의 예제처럼 에러를 두개 잡는다고 하면 왼쪽 것은 쓸 수가 없다. 따라서 as 가 사용되는 것이다.

더 자세한 것은 아래 링크를 참조하면 된다.

PEP 3110: Exception-Handling Changes


추가적으로 큰 문제는 되지 않지만 예외 클래스의 계층 구조도 바뀌었다. 이 것은 아래 링크에서 참조하면 된다.

PEP 352: Exceptions as New-Style Classes

댓글 없음:

댓글 쓰기