![]() | ![]() |
|---|
일단 나는 처음에 try문을 배웠을때 finally의 필요성을 크게 느끼지 못했다
무조건 실행한다고 하지만 그냥 어차피 아래쓰는거나 finally 안에 쓰는거나 차이가 없는 줄 알았다
그도 그럴것이 어차피 except으로 막아주는데 뭔 소용인가 싶다
실제로 차이 없다
아 물론 저 상황에서만 말이다
당연히 출력은 똑같이 0-2가 될 것이다
하지만? 다른 상황이라면 어떨까?

일단 try문에서 0으로 나눴으므로 except문이 실행될거다
except문 안에는 무려 프로그램을 종료 시켜버리는 exit이 있다
흠 뭔가 뭔가 수상하지 않은가?

예상했다시피 무려 exit이 있음에도 불구하고 2가 출력된다
finally문은 정말 무슨일이 있어도 실행이 되고 종료된다
그러므로 return, break 같은 건 물론 exit같이 프로그램을 완전히 종료시켜 버리는 것도 이겨내고 실행이 기여코 되고 끝난다
물론 다른 언어에서도 똑같이 작동한다
finally문 안에 코드는 return,break 같은 일이 발생해도 반드시 실행이 되고 끝난다
내용 추가 + (exit 같은 강제 종료는 언어마다 차이가 있음)
어디다 써먹으면 좋을까?
보통 파이썬에서는 파일을 열고 닫을 일이 많은데 이럴때 사용하기 좋다
반드시 파일은 닫혀야 하므로 finally에 파일 닫는 걸 추가해두면 유용하게 사용할 수 있지 않을까 싶다
무슨 원리로 저게 가능한 걸까요?