python 기초 강좌(제3판) 학습 노트(8)
raise Exception(" !")
'''
Traceback (most recent call last):
File "xx.py", line 9, in
raise Exception(" !")
Exception: !
------------------
(program exited with code: 1)
. . .
이 예(raise Exception)에서 공통 예외가 발생하고 오류 메시지가 추가되었습니다. 여기 예외가 발생했습니다!python에서 이상이 클래스입니다.그 중에서 Exception은 일반적인 이상 클래스이고, 기타 거의 모든 이상은 그것에서 파생된 것이다.공통 예외 외에 다음과 같은 예외 클래스가 있습니다: i, 속성 예외 AttributeError가 속성을 인용하거나 값을 부여하는 데 실패할 때ii, 시스템 예외 OSError 운영체제가 지정한 작업을 수행할 수 없을 때(예를 들어 파일을 열 때), 여러 개의 하위 클래스 iii, 인덱스 예외 Index Error가 시퀀스에 존재하지 않는 인덱스를 사용할 때 발생합니다.LookupError의 하위 클래스 iv, 키 이상 KeyError에 맵에 존재하지 않는 키를 사용할 때, LookupError의 하위 클래스 v, 이름 이상 NameError에 대해 이름(변수)을 찾을 수 없을 때vi, 코드 이상 Syntax Error 코드가 정확하지 않을 때vii,유형 이상 TypeError는 내장 작업이나 함수를 형식이 올바르지 않은 대상에 사용할 때vii를 일으키고, 값 이상ValueError는 내장 작업이나 함수를 이런 대상에 사용할 때 일으킨다. 그 유형이 정확하지만 포함된 값이 ix에 적합하지 않다. 제외 이상 ZeroDivisionError는 제법 또는 모형 연산의 두 번째 파라미터가 0일 때 8.2.2 사용자 정의 이상 클래스를 만드는 것과 같이 8.2.2그러나 Exception을 직접 또는 간접적으로 상속해야 합니다.사용자 정의 이상 클래스에 방법을 추가할 수도 있습니다. ''
class My_Exception(Exception):
def __init__(self):
print(" , 。")
'8.3 포획 이상 사용try/except 문장으로 이상이 발생할 수 있는 곳에서 포획 이상.
try:
x=int(input(" :"))
y=int(input(" :"))
print(x/y)
except ZeroDivisionError:
print(" , !")
''' '''
:3
:0
, !
------------------
(program exited with code: 0)
. . .
8.3.1 파라미터를 제공하지 않고 이상을 포획한 후 다시 그것을 일으키려면raise를 호출할 수 있으며 어떠한 파라미터도 제공하지 않습니다.8.3.2 여러 except 서브문장 형식''
try:
pass
except Exception:
pass
pass
except My_Exception:
pass
pass
'8.3.3 일거양득 except 자구를 사용하여 여러 가지 이상을 포착하려면 한 원조에서 이러한 이상을 지정할 수 있다. 아래와 같다.
try:
pass
except (A_Error,B_Error,C_Error):
pass
'8.3.4 포획 대상은 except 자구에서 이상 대상 자체에 접근해야 하며, 매개 변수가 아닌 두 개를 사용할 수 있습니다.(여러 개의 이상을 포착할 때에도 except에 하나의 매개 변수인 원조만 제공한다는 것을 주의하십시오.)''
try:
x=int(input(" :"))
y=int(input(" :"))
print(x/y)
except ZeroDivisionError as e:
print(" , !",e)
'''
:1
:0
, ! division by zero
------------------
(program exited with code: 0)
. . .
여기서 division by zero는 매개변수 e로 캡처된 ZeroDivision Error 객체입니다.8.3.5 한 단락의 코드를 사용하여 모든 이상을 포착하려면 except 문장에 어떤 이상 클래스도 지정하지 않으면 된다.다음과 같습니다.
try:
pass
except:
print(" 。 !! 。")
'이렇게 모든 이상을 포착하는 것은 위험하다. 왜냐하면 이것은 당신이 마음의 준비를 하고 있는 잘못을 숨길 뿐만 아니라 당신이 고려하지 않은 잘못도 숨길 수 있기 때문이다.8.3.6만 사대길, 어떤 경우에는 이상이 없을 때 코드 블록을 실행하는 것이 유용하다.이를 위해 조건문과 순환처럼try/except문구에 else와finally 자구를 추가할 수 있습니다.(이하 코드는 탕 선생님 강의 노트)''
try:
#
pass
except Exception:
#
pass
else:
#
pass
finally:
#
pass
'8.3.7 마지막 finally 자구는 이상이 발생했을 때 청소 작업을 수행할 수 있습니다.이 자구는try 자구와 조립된 것이다.
8.4이상은 함수 이상과 함수와 천연적인 관계를 가진다.함수에서 발생하는 이상을 처리하지 않으면, 함수를 호출하는 곳으로 전파됩니다.만약 그곳에서도 처리되지 않는다면, 이상은 메인 프로그램 (전역 역할 영역) 에 도달할 때까지 계속 전파될 것이다.주 프로그램에도 이상 처리 프로그램이 없으면, 프로그램은 창고 추적 메시지를 종료하고 표시합니다.
8.5 이상 선의 이상 처리는 그리 복잡하지 않다.코드가 어떤 이상을 일으킬 수 있다는 것을 알고 프로그램이 종료하고 창고 추적 메시지를 표시하지 않으려면, 필요한try/except 또는try/finally 문장을 추가하거나 결합해서 사용할 수 있습니다.어떤 임무는if/else를 사용하여 완성할 때 자연스러워 보이지만try/except를 사용하여 완성하는 것이 훨씬 낫다.8.6 그다지 이상하지 않은 상황 경고 경고, 상황이 정상 궤도에서 벗어났다는 것을 지적하고 모듈 Warnings의 함수 Warn을 사용할 수 있습니다."
from warnings import warn
warn(" ")
'''
xx.py:2: UserWarning:
warn(" ")
------------------
(program exited with code: 0)
. . .
(계속)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.