从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正则表达式 re模块使用说明
May 19 Python
Python使用函数默认值实现函数静态变量的方法
Aug 18 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
使用pytorch进行图像的顺序读取方法
Jul 27 Python
Python socket实现的简单通信功能示例
Aug 21 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
PyCharm的设置方法和第一个Python程序的建立
Jan 16 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
python logging 日志的级别调整方式
Feb 21 Python
python打包多类型文件的操作方法
Sep 21 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
php轻松实现文件上传功能
2016/03/03 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
运算符&amp;&amp;的三个不同层次
2013/04/07 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
three.js 入门案例详解
2018/01/23 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
windows下Virtualenvwrapper安装教程
2017/12/13 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
python输入多行字符串的方法总结
2019/07/02 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
使用Python webdriver图书馆抢座自动预约的正确方法
2021/03/04 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
Notino法国:购买香水和化妆品
2019/04/15 全球购物
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
生物技术专业研究生自荐信
2013/09/22 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
交通事故私了协议书
2014/04/16 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs