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

最新文章

  1. js生成二维码 中间有logo
  2. javascript创建跟随鼠标好玩的东西
  3. 【洛谷P1196】银河英雄传说
  4. JavaScript碰到的几个方法
  5. MAC: Homebrew(代替yum)安装
  6. 全自动编译FFmpeg(含x264,fdk aac,libmp3lame,libvpx等第3方库)
  7. WIFI知识累计之802.11协议radiotap头解析方法
  8. ASP.NET Core 行军记 -----拔营启程
  9. php 获取远程图片
  10. sort()函数与qsort()函数及其头文件
  11. 工控主板对ISO7816智能卡标准的支持
  12. [转]使用Composer管理PHP依赖关系
  13. [Leetcode][Python]47: Permutations II
  14. IT第六天 - eclipse快捷操作、万年历项目的编写、菱形的打印输出、代码简化
  15. 发展合作-ASP.Net传递页面之间的值
  16. ssl通关的概念(一个)
  17. base库
  18. IIS易混概念小结
  19. springboot配置详解
  20. xml和java对象互转:JAXB注解的使用详解

热门文章

  1. 1.phpmyadmin的配置
  2. 数据库递归查询(CET)
  3. git init 与 git init --bare 区别
  4. 02 java 程序环境
  5. [android] AndroidManifest.xml - 【 manifest -> application】
  6. 【MySql】脚本备份数据库
  7. OAuth2.0 介绍
  8. getRequestDispatcher 和sendRedirect区别及路径问题
  9. 带清空按钮TextBox的实现(WPF)
  10. Python3x 爬取妹子图