标签:结果 索引 finally 逻辑 NPU 打开 close log attr
在python中,错误触发的异常如下
在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,一个异常标识一种错误。
# 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)
invalid literal for int() with base 10: ‘hello‘
s1 = ‘hello‘ try: int(s1) except Exception 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)
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(‘无论异常与否,都会执行该模块,通常是进行清理工作‘)
结果:
invalid literal for int() with base 10: ‘hello‘
无论异常与否,都会执行该模块,通常是进行清理工作
try: raise TypeError(‘抛出异常,类型错误‘) except Exception as e: print(e)
class EgonException(BaseException): def __init__(self, msg): self.msg = msg def __str__(self): return self.msg try: raise EgonException(‘抛出异常,类型错误‘) except EgonException as e: print(e)
try: assert 1 == 2 except Exception as e: print(e)
标签:结果 索引 finally 逻辑 NPU 打开 close log attr
原文地址:https://www.cnblogs.com/springsnow/p/11890483.html