파이썬 시도 제외
3330 단어 webdevpythonbeginnersprogramming
파이썬의 예외
프로그램이 오류를 감지하면 Python은 많은 예외를 발생시킵니다(프로그램의 문제 발생). 특정 예외가 발생하면 Python 인터프리터는 현재 프로세스를 종료하고 exception is handled까지 호출자 프로세스에 컨트롤을 보냅니다. 이 작업을 수행하지 않으면 프로그램이 충돌합니다.
다음 프로그램을 고려하십시오. 함수 A는 함수 C를 호출하는 함수 B를 호출합니다. 함수 C에서 예외가 발생했지만 처리되지 않으면 예외가 B로 전송되고 이어서 A로 전송됩니다.
이 조건이 충족되지 않으면 오류 메시지가 표시되고 응용 프로그램이 예기치 않게 빠르게 종료됩니다.
예외 잡기
Python의 예외는 try statement.로 관리됩니다.
예외를 포착하면 수행할 절차를 선택할 수 있습니다. 여기에 예가 있습니다.
# import module sys to get the type of exception
import sys
randomList = ['x', 0, 4]
for entry in randomList: try:
print("The entry is", entry)
r = 1/int(entry)
break
except:
print(sys.exc_info()[0], "occurred.")
print("Next entry.")
print()
print("The reciprocal of", entry, "is", r)
산출:
The entry is x
<class 'ValueError'> occurred.
Next entry.
The entry is 0
<class 'ZeroDivisionError'> occured.
Next entry.
The entry is 4
The reciprocal of 4 is 0.25
이 프로그램에서는 randomList 목록의 값을 반복합니다. 앞에서 언급했듯이 예외를 생성할 수 있는 섹션은 try 블록 내에 포함됩니다. 예외가 발생하지 않으면 예외 블록을 건너뛰고 정상적인 흐름이 재개됩니다(마지막 값에 대해). 그러나 예외가 발생하면 except 블록(첫 번째 및 두 번째 값)에서 처리합니다.
sys 모듈의 exc_info() function을 사용하여 예외 이름을 출력합니다. 그 결과 ValueError가 발생하고 ZeroDivisionError가 0이 되는 것을 볼 수 있습니다.
Python의 모든 예외는 기본 Exception 클래스에서 상속되므로 다음과 같은 방법으로 위 작업을 수행할 수도 있습니다.
# import module sys to get the type of exception
import sys
randomList = ['x', 0, 4]
for entry in randomList:
try:
print("The entry is", entry)
r = 1/int(entry)
break except Exception as e:
print(e.__class__, "occurred.")
print("Next entry.")
print()
print("The reciprocal of", entry, "is", r)
이 프로그램은 위의 프로그램과 동일한 출력을 가집니다.
Python에서 특정 예외 잡기
위의 예에서는 except 절에 특별한 예외가 언급되지 않았습니다. 이것은 모든 예외를 포착하고 동일한 방식으로 각 인스턴스를 처리하기 때문에 나쁜 프로그래밍 기술입니다. catch할 예외를 except 절에 알려줄 수 있습니다.
Atry clause는 다양한 예외를 처리하기 위해 무제한의 except 절을 포함할 수 있지만 예외가 발생하면 하나만 수행됩니다.
except 절에서 튜플 값을 사용하여 몇 가지 예외를 선언할 수 있습니다. 다음은 시작하는 의사 코드입니다.
try:
# do something
pass
except ValueError:
# handle ValueError exception
pass
except (TypeError, ZeroDivisionError):
# handle multiple exceptions
# TypeError and ZeroDivisionError
pass
except:
# handle all other exceptions pass
Reference
이 문제에 관하여(파이썬 시도 제외), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/softhunt/python-try-except-54bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)