python学习笔记(十五)异常处理
python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性 。
例如,我们定义一个函数
first = input('请输入除数:')
second = input('请输入被除数:')
first = int(first)
second = int(second)
res = first/second
li = [,,,]
print(li[])
如果除数second=0,那代码就会抛异常,ZeroDivisionError: division by zero,除数是不能为0的。
如果除数输入是字符串,那么代码也会抛异常,TypeError: unsupported operand type(s) for /: 'int' and 'str'
这时就需要捕捉异常了,当除数为0时提示用户所传参数不对。异常处理使用的是try .... except.....关键字。
first = input('请输入除数:')
second = input('请输入被除数:')
try:
first = int(first)
second = int(second)
res = first/second
except ValueError as e: #这个e代表错误信息,如果上面的两行代码出现了 ValueError这个错
print(e)
print('请输入整数')
except ZeroDivisionError as e:
print(e)
print('除数不能为0')
当异常种类很多的时候,我们可以统一写为except Exception as e:
first = input('请输入除数:')
second = input('请输入被除数:')
try:
first = int(first)
second = int(second)
res = first/second
except Exception as e: #上面代码出异常的时候走这里,
print(e)
print('出错了。。。。。')
else: #没有出错,也不是必须写的
print('并没有出错')#这个是没有异常的时候走
print(res)
finally:#不管出错或者没有出错都会执行它,也不是必须写的。
print('我是finally')
现在我们完善一下操作数据库的函数
1.数据库在连接不成功时会抛异常
2.在执行sql的时候,如果sql语句写的不正确也会抛异常
def my_db2(sql):
try:
coon = pymysql.connect( **MYSQL_INFO )
except Exception as res:
print('数据库连接失败了')
return '数据库连接失败了'
cur = coon.cursor() # 建立游标
try:
cur.execute(sql)#执行sql
except Exception as res:
print('sql出错,sql是%s'%sql)
return 'sql出错'
else:
if sql.strip()[:].upper()=='SELECT':
res = cur.fetchall()
else:
coon.commit()
res = 'ok'
finally:
cur.close()
coon.close()
return res
python学习笔记(十五)异常处理的更多相关文章
- python学习笔记(十五)-异常处理
money = input('输入多少钱:') months = input('还几个月:') try: res = calc(int(money),int(months)) except ZeroD ...
- python 学习笔记十五 web框架
python Web程序 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. Python的WEB框架分为两类: 自己写socket,自 ...
- python 学习笔记十五 django基础
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- python学习笔记(十五)-unittest单元测试的一个框架
unittest 单元测试的一个框架什么框架 一堆工具的集合. TestCase TestSuite 测试套件,多个用例在一起 TestLoader是用来加载TestCase到TestSuite中的 ...
- python学习笔记十五:日期时间处理笔记
#-*- coding: utf-8 -*- import datetime #给定日期向后N天的日期 def dateadd_day(days): d1 = datetime.datetime.no ...
- python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
- python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
- Python学习笔记(五)
Python学习笔记(五): 文件操作 另一种文件打开方式-with 作业-三级菜单高大上版 1. 知识点 能调用方法的一定是对象 涉及文件的三个过程:打开-操作-关闭 python3中一个汉字就是一 ...
- Python学习笔记(十二)—Python3中pip包管理工具的安装【转】
本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...
- (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)
一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...
随机推荐
- 8天学通MongoDB(mark)
转自:http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html 关于mongodb的好处,优点之类的这里就不说了,唯一要 ...
- TensorFlow基础笔记(0) 参考资源学习文档
1 官方文档 https://www.tensorflow.org/api_docs/ 2 极客学院中文文档 http://www.tensorfly.cn/tfdoc/api_docs/python ...
- Modify the server ports
在eclipse中配置好tomcat后,如今有需求须要在一个eclipse启动两个tomcat甚至很多其它,仅仅改动tomcat的8080port肯定不行的,详细须要改动tomcat的shutdown ...
- hdu 5065 数学题
#include<iostream> #include<cmath> #include<cstdio> using namespace std; int A,B,y ...
- (转)word尾注引文添加方式及相关问题
word引文添加方式:http://www.office68.com/word/word-reference-add.html word通配符:http://www.3lian.com/edu/201 ...
- hdu 3336:Count the string(数据结构,串,KMP算法)
Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Python tushare 初步了解
一.安装 1.Python 2.numpy 3.pandas 4.lxml 5.............. n.tushare 二.初步测试
- Windows远程桌面没有密码的电脑
你如果想远程一个密码为空的机器,默认情况下是不可以的,需要进行以下设置 1.windows家庭版不支持远程桌面 2. 3.搜索“本地安全策略”
- MySQL的system命令在渗透测试中的使用以及UDF提权
声明:下面引用关于SYSTEM的东西是自己之前的内容,是自己没有研究透导致的错误结论:有了错就要改,做技术的不能弄虚作假,时时刻刻要求自己要谨慎,虽然我的博客没人看,但是也要向所有已经看到的人道歉,错 ...
- linux shell 脚本使用
定义变量 fileName=text.txt 变量名称fileName,变量名称text.txt 使用变量 $fileName 用美元符号$开头,后面加变量名称,即可使用变量 使用用户输入参数 打印第 ...