본문 바로가기
Python/Python FAQ

Python 파이썬에서 "finally" 절이 왜 필요한가요?, Why do we need the "finally" clause in Python?

by 베타코드 2023. 10. 11.
반응형

질문


나는 왜 우리가 try...except...finally 문에서 finally가 필요한지 잘 모르겠다. 내 의견으로는, 이 코드 블록

try:
    run_code1()
except TypeError:
    run_code2()
other_code()

finally를 사용한 이 코드와 똑같다:

try:
    run_code1()
except TypeError:
    run_code2()
finally:
    other_code()

뭔가 빠진 것인가?


답변


이렇게 반환하는 경우 차이가 있습니다:

try:
    run_code1()
except TypeError:
    run_code2()
    return None   # 메서드가 반환되기 전에 finally 블록이 실행됩니다.
finally:
    other_code()

이와 비교:

try:
    run_code1()
except TypeError:
    run_code2()
    return None   

other_code()  # 예외가 발생하면 실행되지 않습니다.

차이를 일으킬 수 있는 다른 상황들:

  • except 블록 내에서 예외가 발생하는 경우.
  • run_code1()에서 예외가 발생하지만 TypeError가 아닌 경우.
  • continuebreak 문과 같은 다른 제어 흐름 문장.
반응형

댓글