우리가 프로그램을 작성할 때 항상 순조롭게 진행될 수는 없다는 말이 있듯이, 영화를 보러 나갈 때 먼저 나갔다가 걷는 등 비정상적인 상황이 자주 발생합니다. 영화를 보고 쇼핑을 마치고 집으로 돌아왔는데, 이때 밖에 비가 내리고 있어서 쇼핑 계획을 취소하고 집으로 돌아왔습니다. . 여기서 내리는 비는 비정상적인 상황이므로 프로그램을 설계했습니다. 이제 이 예외 처리 솔루션을 추가할 차례입니다.
먼저 예외 문제 를 살펴보겠습니다. 코드는 다음과 같습니다.
number=int(input('숫자를 입력하세요:'))if15/number>=3:print('ok')else:print('wrong')
출력 결과:
번호를 입력하세요: 3ok 번호를 입력하세요: 15wrong 번호를 입력하세요: 0Traceback(mostrecentcalllast):FileC:/Users/test.py,line2,in<module>if15/number>=3:ZeroDivisionError:divisionbyzero
우리가 입력한 분모가 0이면 프로그램이 오류를 보고한다는 것을 알 수 있는데, 이는 우리가 작성한 프로그램에 문제가 있음을 의미합니다. 분모가 0일 때 어떻게 해야 할지 고려하지 않았기 때문에 프로그램에서 예외가 발생했습니다. , 그래서 우리는 발생할 수 있는 몇 가지 비정상적인 상황을 고려해야 하는 프로그램을 작성했습니다. 몇 가지 일반적인 비정상적인 상황에 대해 알아 보겠습니다.
사전 키에 접근했는데 해당 키 값이 존재하지 않는 경우 발생하는 예외입니다.
코드는 다음과 같습니다:
my_dict={'dotcpp':123}print(my_dict['dot'])
예외는 다음과 같습니다.
역추적(가장 최근 호출):FileC:/Users/test.py,line2,in<module>print(my_dict['dot'])KeyError:'dot'
이런 종류의 예외는 Python을 배울 때 더 일반적입니다. 시퀀스 요소에 액세스할 때 이 예외 메커니즘은 인덱스 값이 범위를 초과할 때 트리거됩니다.
my_list=[1,2,3,4,5]인쇄(my_list[100])
예외는 다음과 같습니다.
역추적(최근 호출 마지막):FileC:/Users/test.py,line2,in<module>print(my_list[100])IndexError:listindexoutofrange
목록에는 5개의 요소만 있으며 액세스가 제한을 초과하면 이 예외가 발생합니다.
이 예외는 정의되지 않은 변수를 사용할 때 발생하며 코드는 다음과 같습니다.
name=['www.dotcpp,com']print('기존 변수 이름:',name)print('존재하지 않는 변수 dotcpp:',dotcpp)
예외는 다음과 같습니다.
기존 변수 이름:['www.dotcpp,com']Traceback(mostrecentcalllast):FileC:/Users/Qingyan/PycharmProjects/untitled1/teach/test.py,line3,in<module>print('존재하지 않는 변수 dotcpp: ',dotcpp)이름오류:이름'dotcpp'가 정의되지 않았습니다.
이 예외는 전달된 데이터가 지정된 유형과 일치하지 않을 때 발생합니다. 예를 들어 두 개의 정수를 더하고 빼려고 하는데 그 중 하나가 문자열 유형을 사용하는 경우 이 오류가 발생합니다.
코드는 다음과 같습니다:
a=10b='dotcpp'인쇄(a+b)
예외는 다음과 같습니다.
역추적(가장 최근 호출):FileC:/Users/test.py,line3,in<module>print(a+b)TypeError:unsupportedoperandtype(s)for+:'int'and'str'
위는 가장 일반적인 예외 중 일부입니다. 학습 과정에서 ValueError, OSError, AttributeError 및 기타 예외가 발생할 수 있습니다. 우리가 인식하지 못하는 예외가 발생하면 도움말 문서를 통해 관련 내용을 쿼리할 수 있습니다.