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对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...
 
随机推荐
- [android] AndroidManifest.xml - 【 manifest -> 其他次要配置】
			
<uses-sdk> 作用:使应用程序的兼容性更好,指明应用程序需要的最小API,编译API以及最大支持的API.值都是整数 <uses-sdk android:minSdkVers ...
 - jira集成fisheye代码深度查看工具安装绿色版
			
软件介绍: Fisheye 是一个源代码库深度查看软件,它可以挖掘源代码库中的有用信息,呈现在Web浏览器界面上,Fisheye优点: 1) Fisheye是一个基于Web的代码管理系统,可以与SVN ...
 - 考虑下面两个JSP文件代码片断: test1.jsp:
			
<HTML> <BODY> <% pageContext.setAttribute(”ten”,new Integer(10));%> //1 </BODY& ...
 - 【BZOJ】1682: [Usaco2005 Mar]Out of Hay 干草危机(kruskal)
			
http://www.lydsy.com/JudgeOnline/problem.php?id=1682 最小生成树裸题.. #include <cstdio> #include < ...
 - 《Programming with Objective-C》第七章 Values and Collections
			
1.平台相关的数据类型 These types, like NSInteger and NSUInteger, are defined differently depending on the tar ...
 - 在VS中调试javascript脚本
			
https://blog.csdn.net/u010228798/article/details/78207375
 - chkcofnig-minimal-script
			
author :headsen chen date: 2018-06-04 12:02:27 #!/bin/bash for i in `chkconfig --list |awk '{print ...
 - 02.ZooKeeper的Java客户端使用
			
1.ZooKeeper常用客户端比较 1.ZooKeeper常用客户端 zookeeper的常用客户端有3种,分别是:zookeeper原生的.Apache Curator.开源的zkclie ...
 - Spring的Bean的生命周期以及Bean的后置处理器
			
Bean的生命周期: Spring IOC 容器可以管理 Bean 的生命周期, Spring 允许在 Bean 生命周期的特定点执行定制的任务. Spring IOC 容器对 Bean 的生命周期进 ...
 - CH5E01 乌龟棋【线性DP】
			
5E01 乌龟棋 0x5E「动态规划」练习 描述 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物.乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数).棋盘第1 格是唯一的起点,第N 格是终点 ...