Python try except finally 자원 회수 실현
주의,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 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.