从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中正则表达式的使用详解
Oct 17 Python
python base64 decode incorrect padding错误解决方法
Jan 08 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
详解如何用OpenCV + Python 实现人脸识别
Oct 20 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
Jan 03 Python
python实现连连看辅助(图像识别)
Mar 25 Python
Python中zip()函数的简单用法举例
Sep 02 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 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 常用类汇总 推荐收藏
2010/05/13 PHP
解析php中的escape函数
2013/06/29 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
简述Angular 5 快速入门
2017/11/04 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
Python切片知识解析
2016/03/06 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
提升python处理速度原理及方法实例
2019/12/25 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
自考自我鉴定范文
2013/10/30 职场文书
承认错误的检讨书
2014/01/30 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
求职简历自我评价范文
2015/03/10 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
Python上下文管理器Content Manager
2021/06/26 Python
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫