从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 27 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
May 06 Python
Python+MongoDB自增键值的简单实现
Nov 04 Python
python取代netcat过程分析
Feb 10 Python
Python使用cx_Oracle模块操作Oracle数据库详解
May 07 Python
5分钟 Pipenv 上手指南
Dec 20 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
Python pip install如何修改默认下载路径
Apr 29 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 Python
详解Python中*args和**kwargs的使用
Apr 07 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根据日期判断星座的函数分享
2014/02/13 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
Python中的Matplotlib模块入门教程
2015/04/15 Python
python安装以及IDE的配置教程
2015/04/29 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
python通过http下载文件的方法详解
2019/07/26 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
总经理司机职责
2014/02/02 职场文书
岗位说明书怎么写
2014/07/30 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
义诊活动通知
2015/04/24 职场文书
毕业欢送会致辞
2015/07/29 职场文书
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS