从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程序语言快速上手教程
Jul 18 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
Jun 23 Python
python实现list元素按关键字相加减的方法示例
Jun 09 Python
Python使用random.shuffle()打乱列表顺序的方法
Nov 08 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
Python中一些深不见底的“坑”
Jun 12 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
Jun 30 Python
Python 使用生成器代替线程的方法
Aug 04 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 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
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
python实现绘制树枝简单示例
2014/07/24 Python
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
python实现按行分割文件
2019/07/22 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
python正则表达式实例代码
2020/03/03 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
全球性的女装店:storets
2019/06/12 全球购物
你常见到的runtime exception
2016/09/05 面试题
医药专业应届毕业生求职信范文
2014/01/01 职场文书
求职信模板怎么做
2014/01/26 职场文书
2016新年问候语大全
2015/11/11 职场文书