码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习之==>异常处理

时间:2018-06-27 13:29:48      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:exce   index   syn   nec   python   对象类型   常见   字典   过程   

一、为什么要进行异常处理

  程序在运行过程中,可能会遇到各种各样的错误,程序一旦出错,就会停止运行。为了让程序能够正常运行完,就需要捕捉异常,通过对捕捉到的异常做对应的处理,来保证程序正常运行。

二、捕捉所有异常

  1、try:捕捉这段代码的异常

  2、except Exception:捕捉所有异常

  3、else:没有出错则执行else下面的代码,但else不写也可以

  4、finally:无论是否有异常,都会执行finally下面的代码,它也可以不写

 1 # 异常处理
 2 first = input(first:)
 3 second = input(second:)
 4 try:  # 捕捉异常
 5     first = int(first)
 6     second = int(second)
 7     res = first/second
 8 except Exception as e: # try里面这段代码出异常的时候走
 9     print(e)
10     print(出错了)
11 else:  # 没有出错,不是必须写的
12     print(没有出错) # 没有出错的时候走
13     print(res)
14 finally:  # 不管是否出错都会执行它,也不是必须写的
15     print(无论是否出错都会执行这条代码!)

三、捕捉异常练习:完善MySQL操作函数

 1 def my_db(sql):
 2     import pymysql
 3     try:
 4         conn = pymysql.connect(**MYSQL_INFO)
 5     except Exception as e:
 6         print(数据库连接失败)
 7         return 数据库连接失败  # 遇到return函数结束
 8     else:  # 没有出错继续执行
 9         cur = conn.cursor()
10         try:
11             cur.execute(sql)
12         except Exception as res:
13             print(执行sql出错,sql是:%s%sql)
14         else:  # 没有出错继续执行
15             if sql.strip().split()[0].upper() == SELECT:
16                 res = cur.fetchall()
17             else:
18                 conn.commit()
19                 res = OK
20         finally:  # 这个finally对应的是执行sql出错的try,前面连接失败直接跳出了函数
21             cur.close()
22             conn.close()
23         return res

四、常见的异常

 1 AttributeError: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
 2 IOError:输入 / 输出异常,一般是无法打开文件
 3 ImportError: 无法导入模块或包,一般是路径问题或名称错误
 4 IndentationError:代码没有正确对齐,属于语法错误
 5 IndexError:下标索引超出序列边界,比如x只有三个元素,却试图访问x[3]
 6 KeyError:试图访问字典里不存在的键
 7 KeyboardInterrupt:Ctrl + C被按下
 8 NameError:使用一个还未被赋予对象的变量
 9 SyntaxError: 语法错误
10 TypeError: 传入对象类型与要求的不符
11 UnboundLocalError:试图访问一个还未被设置的局部变量,一般是由于在代码块外部还有另一个同名变量
12 ValueError: 传入一个调用者不期望的值,即使值的类型是正确的 

五、主动抛出异常

  在代码里让它自动抛出一个异常,然后捕捉到。比如我们在写自动化测试脚本时,结果和预期不符,就可以主动抛出一个异常,然后捕捉到做其他处理。主动抛出异常使用raise关键字。

1 try:
2     raise KeyError  # 主动抛出一个keyerror的异常
3 except KeyError as e:
4     print(这是主动抛出的异常)

 

Python学习之==>异常处理

标签:exce   index   syn   nec   python   对象类型   常见   字典   过程   

原文地址:https://www.cnblogs.com/L-Test/p/9233105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!