从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解析xml中dom元素的方法
Mar 12 Python
Python RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
编写python代码实现简单抽奖器
Oct 20 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 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 IF ELSE简化/三元一次式的使用
2011/08/22 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
解析Python中的异常处理
2015/04/28 Python
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
Pygame的程序开始示例代码
2020/05/07 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
python支持多继承吗
2020/06/19 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
初中高效课堂实施方案
2014/02/26 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
python之基数排序的实现
2021/07/26 Python