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