从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 相关文章推荐
在Windows8上的搭建Python和Django环境
Jul 03 Python
Python实现栈的方法
May 26 Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
Python 对象中的数据类型
May 13 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
Python3操作MongoDB增册改查等方法详解
Feb 10 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
Python insert() / append() 用法 Leetcode实战演示
Mar 31 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
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php strtotime 函数UNIX时间戳
2009/01/14 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
详解PHP数组赋值方法
2015/11/07 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
JavaScript闭包和范围实例详解
2016/12/19 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
python安装scipy的方法步骤
2019/06/26 Python
python打印异常信息的两种实现方式
2019/12/24 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
英语教学随笔感言
2014/02/20 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
安全教育培训心得体会
2016/01/15 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
详解Python如何批量采集京东商品数据流程
2022/01/22 Python