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 >>自定义异常是:输入非法

 

posted @ 2018-07-02 15:58  虫儿要吃草  阅读(185)  评论(0编辑  收藏  举报