파이썬에서 오류로 인해 발생하는 예외는 다음과 같습니다.
파이썬의 다양한 예외는 다양한 유형, 즉 예외 식별로 식별할 수 있습니다. 실수.
AttributeError foo.x와 같은 객체가 없는 트리에 액세스하려고 하지만 foo에 속성이 없습니다.
ImportError 모듈이나 패키지를 가져올 수 없거나 기본적으로 경로 문제가 있습니다. name# TypeError:int类型不可迭代 for i in 3: pass # ValueError num=input(">>: ") #输入hello int(num) # NameError aaa # IndexError l=['egon','aa'] l[3] # KeyError dic={'name':'egon'} dic['age'] # AttributeError class Foo:pass Foo.x # ZeroDivisionError:无法完成计算 res1=1/0 res2=1+'str'
try: 被检测的代码块 except 异常类型: try中一旦检测到异常,就执行这个位置的逻辑
try: f = [ 'a', 'a', 'a','a','a', 'a','a',] g = (line.strip() for line in f) #元组推导式 print(next(g)) print(next(g)) print(next(g)) print(next(g)) print(next(g)) except StopIteration: f.close()
s1 = 'hello' try: int(s1) except IndexError as e: # 未捕获到异常,程序直接报错 print(e)
s1 = 'hello' try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e) except Exception as e: print(e)
for arg in sys.argv[1:]: try: f = open(arg, 'r') except IOError: print('cannot open', arg) else: print(arg, 'has', len(f.readlines()), 'lines') f.close()
s1 = 'hello' try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e) #except Exception as e: # print(e) else: print('try内代码块没有异常则执行我') finally: print('无论异常与否,都会执行该模块,通常是进行清理工作')
Python은 raise 문을 사용하여 지정된 예외를 발생시킵니다. raise의 구문 형식은 다음과 같습니다.
raise [Exception [, args [, traceback]]]
try: raise TypeError('抛出异常,类型错误') except Exception as e: print(e)
try: raise NameError('HiThere') except NameError: print('An exception flew by!') raise #An exception flew by! #Traceback (most recent call last): # File "", line 2, in ? #NameError: HiThere
class EgonException(Exception): def __init__(self, msg): self.msg = msg def __str__(self): return self.msg try: raise EgonException('抛出异常,类型错误') except EgonException as e: print(e) #抛出异常,类型错误
class Error(Exception): """Base class for exceptions in this module.""" pass class InputError(Error): """Exception raised for errors in the input. Attributes: expression -- input expression in which the error occurred message -- explanation of the error """ def __init__(self, expression, message): self.expression = expression self.message = message class TransitionError(Error): """Raised when an operation attempts a state transition that's not allowed. Attributes: previous -- state at beginning of transition next -- attempted new state message -- explanation of why the specific transition is not allowed """ def __init__(self, previous, next, message): self.previous = previous self.next = next self.message = message
assert expression
if not expression: raise AssertionError
assert expression [, arguments]
if not expression: raise AssertionError(arguments)
import sys assert ('linux' in sys.platform), "该代码只能在 Linux 下执行" # 接下来要执行的代码 # Traceback (most recent call last): # File "C:/PycharmProjects/untitled/run.py", line 2, in # assert ('linux' in sys.platform), "该代码只能在 Linux 下执行" # AssertionError: 该代码只能在 Linux 下执行
위 내용은 Python의 예외 처리 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!