从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 logging模块学习笔记
May 24 Python
Django中处理出错页面的方法
Jul 15 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
使用python接入微信聊天机器人
Mar 31 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
python解包概念及实例
Feb 17 Python
Python 的 sum() Pythonic 的求和方法详细
Oct 16 Python
利用Python实现Picgo图床工具
Nov 23 Python
Python自动化实战之接口请求的实现
May 30 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
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
php之可变变量的实例详解
2017/09/12 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
详解vue v-model
2020/08/31 Javascript
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Python做文本按行去重的实现方法
2016/10/19 Python
Sublime开发python程序的示例代码
2018/01/24 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
Python编程中类与类的关系详解
2019/08/08 Python
Python 列表的清空方式
2020/01/13 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
院药学专业个人求职信
2013/09/21 职场文书
会计系毕业求职信
2014/08/07 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL