Python try except finally 자원 회수 실현

Python 이상 처리 메커니즘은 또한finally 문장을 제공합니다. 일반적으로try 블록의 프로그램을 청소하는 데 사용됩니다.
주의,else 문장과 달리,finally는try와 조합하여 사용하기만 하면 이 구조에 except와else가 포함되어 있는지 여부는finally에 필요하지 않습니다(else는tryexcept와 조합하여 사용해야 합니다).
전체 이상 처리 메커니즘에서finally 문장의 기능은try 블록에 이상이 발생하든지 말든지, 최종적으로finally 문장에 들어가서 그 중의 코드 블록을 실행하는 것이다.
finally 문장의 이러한 특성을 바탕으로 어떤 경우try 블록의 프로그램이 물리적 자원(파일, 데이터베이스 연결 등)을 열 때 이 자원은 수동으로 회수해야 하기 때문에 회수 작업은 일반적으로finally 블록에 놓여 있다.
Python 쓰레기 회수 메커니즘은 변수, 클래스 대상이 차지하는 메모리만 회수할 수 있고 파일 닫기, 데이터베이스 연결 등과 같은 작업을 자동으로 완성할 수 없습니다.
독자들은 이 물리적 자원을 회수하려면finally 블록을 사용해야 합니까?물론 아니지만finally 블록을 사용하는 것이 좋습니다.우선try블록은 자원 회수 작업에 적합하지 않다. 만약try블록의 특정한 줄 코드에 이상이 발생하면 그 후속 코드는 실행되지 않기 때문이다.그 다음에except와else도 적합하지 않아서 실행되지 않을 수도 있습니다.한편,finally 블록의 코드는try 블록에 이상이 발생하든 없든 이 블록의 코드는 실행됩니다.
예:

try:
  a = int(input("  a  :"))
  print(20/a)
except:
  print(" !")
else:
  print("  else  ")  
finally :
  print("  finally  ")
이 프로그램을 실행하려면:
a의 값을 입력하십시오: 4
5.0
else 블록의 코드 실행하기
finally 블록의 코드를 실행합니다
try 블록의 코드가 이상이 발생했을 때 except 블록은 실행되지 않습니다.else 블록과finally 블록의 코드는 실행됩니다.
프로그램을 다시 실행하려면:
a의 값을 입력하십시오: a
이상 발생!
finally 블록의 코드를 실행합니다
try 블록의 코드에 이상이 발생하면 except 블록이 실행되고else 블록의 코드는 실행되지 않으며finally 블록의 코드는 실행됩니다.
finally 블록의 강력함은 여기에 그치지 않습니다. try 블록에 이상이 발생하고 except 처리 이상이 없어도finally 블록의 코드가 실행됩니다.예:

try:
  # 
  print(20/0)
finally :
  print("  finally  ")
프로그램 실행 결과:
finally 블록의 코드를 실행합니다
Traceback (most recent call last):
  File "D:\python3.6\1.py", line 3, in
    print(20/0)
ZeroDivisionError: division by zero
try 블록에 코드가 이상이 발생하여 프로그램이 붕괴될 때, 붕괴 전에Python 해석기가finally 블록에 있는 코드를 실행하는 것을 볼 수 있습니다.
Python try except finally 자원 회수 실현에 관한 이 글은 여기까지 소개되었습니다. 더 많은 Python try except finally 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기