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

 

posted on 2018-10-26 21:53  嘟嘟嘟啦  阅读(124)  评论(0编辑  收藏  举报

导航