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")