24 python异常机制
1 --------------------捕获多个异常------------------------------------------- 2 try: 3 pass 4 except Exception1 as e: 5 raise 6 except Exception2 as e: 7 raise 8 except Exception3 as e: 9 raise 10 。。。。等等 11 12 ##--- 其实等同于以下(也是可以捕获所有异常的) 13 try: 14 pass 15 except Exception as e: 16 raise 17 18 19 -------------------try except finally 结构---------------------------------------- 20 21 try: 22 print('try...') 23 r = 10 / 0 24 print('result:', r) 25 except ZeroDivisionError as e: 26 print('except:', e) 27 finally: 28 print('finally...') ##不管发生什么异常都会执行finally 语句块 29 print('END') 30 当我们认为某些代码可能会出错时,就可以用try来运行这段代码, 31 32 如果执行出错,则后续代码不会继续执行, 33 1,而是直接跳转至错误处理代码,即except语句块, 34 2,执行完except后,如果有finally语句块, 35 3,则执行finally语句块,至此,执行完毕。 36 37 ##上面的代码在计算10 / 0时会产生一个除法运算错误: 38 39 --------------------------try except else 结构----------------------- 40 list1=range(9) 41 print(list1) 42 try: 43 list1[3] 44 except IndexError as e: ## 如果有IndexError 的异常,则执行语句块 45 print e 46 else: 47 print ('xxx') ## 如果没有异常,则执行此语句块 48 49 50 ------------------try except else finally 结构也是可以的------------------------------- 51 52 53 ###--------------------- raise(主动抛出异常) 和 assert(断言,一般用于调于,即判断是否为真) ---------------------- 54 55 raise -- 主动抛出异常,一般都用在自定义异常,(因为python内置的异常,都会自动抛出的) 56 57 ###----------------自定义异常--------------------- 58 59 class ClassMyExcption(Exception): ##继承异常类 60 def __init__(self, arg): 61 super(ClassMyExcption, self).__init__(self) ## 必须调用父类的构造函数 62 self.info=arg 63 def __str__(self): ## 必须要有此内置特殊函数 64 return('自定义异常是:{0}'.format(self.info)) 65 66 if 1==1: 67 raise ClassMyExcption('输入非法') ## 抛出自定义异常对象。程序结束,后面不会执行 68 69 print('xxxx') 70 71 -----结果是: 72 >>自定义异常是:输入非法