从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的print用法示例
Feb 11 Python
python实现三次样条插值
Dec 17 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
Django实现基于类的分页功能
Oct 31 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
PyTorch中的C++扩展实现
Apr 02 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
python实现三壶谜题的示例详解
Nov 02 Python
python中Matplotlib绘制直线的实例代码
Jul 04 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 Google的translate API代码
2008/12/10 PHP
php 接口类与抽象类的实际作用
2009/11/26 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
python中常用检测字符串相关函数汇总
2015/04/15 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
python模块之paramiko实例代码
2018/01/31 Python
python抽取指定url页面的title方法
2018/05/11 Python
详解Python sys.argv使用方法
2019/05/10 Python
详解python和matlab的优势与区别
2019/06/28 Python
如何基于Python创建目录文件夹
2019/12/31 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
生产厂长岗位职责
2014/02/21 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
小学安全汇报材料
2014/08/14 职场文书
医学检验专业自荐信
2014/09/18 职场文书
python实现简单聊天功能
2021/07/07 Python