从0开始的Python学习016异常


Posted in Python onApril 08, 2019

简介

当你的程序不能正常运行的时候,Python会在控制台打印一段提醒,告诉你一个错误,这个错误就是异常。

错误

从0开始的Python学习016异常

我在控制台写了一段无效的代码,将print()的括号去掉,在执行这条语句的时候,系统提示语法错误,无效的语句(我百度翻译的)。这就是错误处理器所作的工作。

再换一种方式写错误:

从0开始的Python学习016异常

在程序获取用户输入的时候,我们使用CTRL+d引发了一个EOFError错误,接下来我们尝试去处理这样的错误。

处理异常

使用try---except语句来处理异常。我们通常把容易产生异常的语句放置在try块中,把做异常处理的语句放在except块中。

import sys

try:
  a = input('Enter something:')
except(EOFError):
  print('\nWhy did you do an EOF on me ?')
  sys.exit()
except:
  print('\nSome error/exception occurred.')

print('Done')

运行结果

从0开始的Python学习016异常

我们把所有可能引发错误的语句放在try块中,然后在except从句/块中处理所有的错误和异常。except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try从句,至少都有一个相关联的except从句。

你还可以让try..catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。

import sys

try:
  a = input('Enter something:')
except(EOFError):
  print('\nWhy did you do an EOF on me ?')
  sys.exit()
except:
  print('\nSome error/exception occurred.')
else:
  print('no error')

print('Done')

运行结果

从0开始的Python学习016异常

raise引发异常

你可以使用raise语句抛出异常。你需要指明错误/异常的名称和伴随异常触发的异常对象。这个异常应该是Error和Exception类的子类。这就用到了继承的思想,使用__init__方法初始一些方法和参数。

class ShortInputException(Exception):
  def __init__(self,length,atleast):
    Exception.__init__(self)
    self.length = length
    self.atleast = atleast

try:
  s = input('Enter something-->')
  print(len(s))
  if len(s) < 3:
    raise ShortInputException(len(s),atleast = 3)
except(EOFError):
  print('\nWhy did you do an EOF on me ?')
except(ShortInputException) as x:
  print('ShortInputException: The in input was of length %d,\
      was expecting at least %d' % (x.length,x.atleast))
else:
  print('No exception was raised.')

运行结果

从0开始的Python学习016异常

try...finally

假如在你读文件的时候发生了异常,但是无论如何文件都要关闭。这个时候该怎么做呢?

这里我们需要使用finally块来完成。

在使用try捕获异常的时候,我们可以同时使用except块和finally块。

import time

try:
  f = open('poem.txt')
  while True: # our usual file-reading idiom
    line = f.readline()
    if len(line) == 0:
      break
    time.sleep(2)
    print(line)
finally:
  f.close()
  print('Cleaning up...closed the file')

运行结果

从0开始的Python学习016异常

这里使用了time的sleep函数,里面的参数是它的运行间隔。

从0开始的Python学习016异常

这样我们就有时间去使用CTRL+c使程序发生异常。这时候我们发现finally块中的语句还是运行的,文件正常关闭了。

简极(∞+∞=∞ ∞-∞=∞)

以上所述是小编给大家介绍的Python异常详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python实现完整的事务操作示例
Jun 20 Python
python扫描proxy并获取可用代理ip的实例
Aug 07 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
python实现四人制扑克牌游戏
Apr 22 Python
pytorch学习教程之自定义数据集
Nov 10 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
python音频处理的示例详解
Dec 23 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
Python爬取某拍短视频
Jun 11 Python
python单向链表实例详解
May 25 Python
Python字符串匹配之6种方法的使用详解
Apr 08 #Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 #Python
Python后台开发Django的教程详解(启动)
Apr 08 #Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 #Python
Python定义函数功能与用法实例详解
Apr 08 #Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 #Python
Python下简易的单例模式详解
Apr 08 #Python
You might like
js代码实现微博导航栏
2015/07/30 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
Python读写文件方法总结
2015/06/09 Python
Python实现随机选择元素功能
2017/09/14 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
监理资料员岗位职责
2014/01/03 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
档案工作汇报材料
2014/08/21 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
企业安全生产检查制度
2015/08/06 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python