从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 相关文章推荐
Django查询数据库的性能优化示例代码
Sep 24 Python
python的socket编程入门
Jan 29 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
详解Python self 参数
Aug 30 Python
Python netmiko模块的使用
Feb 14 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
js原型链原理看图说明
2012/07/07 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python进程类subprocess的一些操作方法例子
2014/11/22 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
材料会计岗位职责
2014/03/06 职场文书
大学军训感言300字
2014/03/09 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
努力学习保证书
2015/02/26 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers