从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文件实例分享
Dec 04 Python
Python中3种内建数据结构:列表、元组和字典
Nov 30 Python
Python自定义简单图轴简单实例
Jan 08 Python
Tornado高并发处理方法实例代码
Jan 15 Python
Python中的默认参数实例分析
Jan 29 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
Python批处理删除和重命名文件夹的实例
Jul 11 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
Python3模拟登录操作实例分析
Mar 12 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 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 addslashes 函数详细分析说明
2009/06/23 PHP
php浏览历史记录的方法
2015/03/10 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
详细介绍Python语言中的按位运算符
2013/11/26 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
详解flask表单提交的两种方式
2018/07/21 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
python找出完数的方法
2018/11/12 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
医药营销个人求职信范文
2014/02/07 职场文书
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
就业协议书怎么填
2014/04/11 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
特岗教师个人总结
2015/02/10 职场文书
防卫过当辩护词
2015/05/21 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python