从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 21 Python
Python算法应用实战之栈详解
Feb 04 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
python解决字符串倒序输出的问题
Jun 25 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
在pytorch中查看可训练参数的例子
Aug 18 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
Python3 集合set入门基础
Feb 10 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
浅谈python出错时traceback的解读
Jul 15 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
Python内置函数及功能简介汇总
Oct 13 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中的traits实现代码复用使用实例
2015/05/13 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
python 常用的基础函数
2018/07/10 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
python中几种自动微分库解析
2019/08/29 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
优秀教师先进事迹
2014/01/22 职场文书
怎么写好自荐书
2014/03/02 职场文书
给老婆道歉的话
2015/01/20 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
Redis高可用集群redis-cluster详解
2022/03/20 Redis
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js