从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之不要红头文件(2)
Sep 28 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
Python3.x爬虫下载网页图片的实例讲解
May 22 Python
基于scrapy的redis安装和配置方法
Jun 13 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
python协程gevent案例 爬取斗鱼图片过程解析
Aug 27 Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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 access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
php简单生成随机数的方法
2015/07/30 PHP
php验证手机号码
2015/11/11 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
python使用zip将list转为json的方法
2018/12/31 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
大客户销售经理职责
2013/12/04 职场文书
研讨会主持词
2014/04/02 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
2014年生产部工作总结
2014/12/17 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
SQL中的连接查询详解
2022/06/21 SQL Server