1 1,异常机制
2 例子;
3 >>> while True:
4 ... try:
5 ... x = int(raw_input("Please enter a number: "))
6 ... break
7 ... except ValueError:
8 ... print "Oops! That was no valid number. Try again..."
9 ---以上是让用户从键盘输入一个数字,如果输入的是非数字,则会一直循环提示用户输入正确的值,直到输入正确
10
11 2,except 子句:
12 try:
13 open("abc.txt")
14 except FileNotFoundError: --由于没有写异常变量,所以此except会接收所有系统抛出来的异常
15 print "文件打开失败,文件未找到!!"
16 pass
17
18 系统抛出的异常有:
19 IOError
20 NameError
21 FileNotFoundError
22
23 抛出异常的机制:
24 1,如果在运行时发生异常的话,解释器会查找相应的处理语句(称为handle)
25 2,如果在当前函数里没找到,它会将异常传递给上层调用函数,看看上层调用函数能不能处理
26 3,如果在最外层调用函数也没有能接收这个异常的话,解释器就会退出,同时打印出异常提示
27
28 ## 例子:
29 try:
30 a=12/0
31 except Exception as e: ## Exception 可以接收任何异常
32 print e
33 print "有异常错误"
34
35 print "end"
36
37 3,finally子句
38 即不管异常是会发生,
39 finally子句中的代码都会执行,(保证一些善后工作,不会因为异常退出而不去处理)
40 一般finally子句,文件关闭,释放锁,数据库连接返回给的连接池
41 try:
42 f= open("abc.txt")
43 except FileNotFoundError:
44 print "文件打开失败,文件未找到!!"
45 finally:
46 f.close()
47 print "OVER!!"
48
49 4,raise 抛出异常
50
51 raise 异常名 (异常信息)
52 例:
53 if a>5 :
54 raise too_big ("太大了")
55
56 注意:
57 抛出的异常名,必须是系统是定义好的,python中没有自定义的异常名
58 只能自定义抛出。以上例子中的too_big就是提示未定义
59
60 例如:
61 try:
62 if 1==1:
63 raise NameError
64 except NameError:
65 print ("xxxxxxxxx")