Python异常处理
day25
参考:http://www.cnblogs.com/wupeiqi/p/5017742.html
1 while True: 2 try: 3 # 4 inp = input('请输入序号:') 5 i = int(inp) 6 7 except Exception as e: 8 print(e) 9 i = 1 10 11 print(i)
执行结果:
请输入序号:8 8 请输入序号:9 9 请输入序号:yu invalid literal for int() with base 10: 'yu' 1 请输入序号:
IndexError,ValueError等是Exception的子类
1 #IndexError,ValueError等是Exception的子类 2 try: 3 li = [11, 22] 4 li[999] 5 6 except IndexError as e: 7 print(e)
执行结果:
list index out of range
Process finished with exit code 0
else,finall
1 try: 2 3 int('9a') 4 5 except IndexError as e: 6 print('IndexError',e) 7 except ValueError as e: 8 print('ValueError',e) 9 except Exception as e: 10 print('Exception',e) 11 else: 12 print('else')#正确,则执行 13 finally: 14 print('.....')#无论如何都执行
若正确则执行else中内容,而finally中内容必须执行。
执行结果:
ValueError invalid literal for int() with base 10: '9a' ..... Process finished with exit code 0
主动触发异常、自定义异常、断言
1 #主动触发异常 2 def db(): 3 return False 4 5 def index(): 6 try: 7 result = db() 8 if not result: 9 raise Exception('数据库处理错误')#处理信息 10 except Exception as e: 11 str_error = str(e) 12 print(str_error)#出错则输出:数据库处理错误 13 14 index() 15 16 # try: 17 # raise Exception('不过了......')#主动触发异常 18 # except Exception as e: 19 # print(e) 20 21 22 #自定义异常 23 class OldBoyError(Exception):#继承Exception 24 25 def __init__(self, msg): 26 self.message = msg 27 28 def __str__(self): 29 return self.message 30 31 # obj = OldBoyError('xxx') 32 # print(obj) 33 try: 34 raise OldBoyError('我错了...') 35 except OldBoyError as e: 36 print(e)# e对象的__str__()方法,获取返回 37 38 39 #断言,用于强制用户服从,可捕获,但一般不捕获。 40 print(123) 41 assert 1 == 2 #后面为条件 42 print(456)
执行结果:
数据库处理错误 我错了... 123 Traceback (most recent call last): File "/home/nizhipeng/PycharmProjects/learnPython/day25/异常处理.py", line 82, in <module> assert 1 == 2 #后面为条件 AssertionError Process finished with exit code 1