반응형
질문
나는 왜 우리가 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
가 아닌 경우.continue
및break
문과 같은 다른 제어 흐름 문장.
반응형
댓글