从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 MD5文件生成码
Jan 12 Python
Python牛刀小试密码爆破
Feb 03 Python
Python实现抓取网页并且解析的实例
Sep 20 Python
详解Python中的array数组模块相关使用
Jul 05 Python
对Python之gzip文件读写的方法详解
Feb 08 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
python模拟菜刀反弹shell绕过限制【推荐】
Jun 25 Python
Python pandas库中的isnull()详解
Dec 26 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
Python pandas求方差和标准差的方法实例
Aug 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
详解React 元素渲染
2020/07/07 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
python路径的写法及目录的获取方式
2019/12/26 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
python3.7添加dlib模块的方法
2020/07/01 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
西部世纪.net笔试题面试题
2014/04/03 面试题
机关门卫岗位职责
2013/12/30 职场文书
优秀员工获奖感言
2014/03/01 职场文书
年度评优评先方案
2014/06/03 职场文书
李白故里导游词
2015/02/12 职场文书
小学校长开学致辞
2015/07/29 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书