异常执行路径

代码参考

  1. try:
  2. text = input('请输入 --> ')
  3. except EOFError:
  4. print('为什么你按下了EOF?')
  5. except KeyboardInterrupt:
  6. print('你取消了操作')
  7. except Exception as e: # 当前面的异常都没匹配到,万能异常
  8. print(e)
  9. else:
  10. print('你输入了 {}'.format(text))
  11. finally:
  12. print("程序结束...")

try–>代码报错–>except–>finally

try–>代码正常–>else ->finally

常见异常模拟

参考

  1. - 直观体验
  2. >>> a
  3. Traceback (most recent call last):
  4. File "<stdin>", line 1, in <module>
  5. NameError: name 'a' is not defined
  6. >>> d={}
  7. >>> d['name']
  8. Traceback (most recent call last):
  9. File "<stdin>", line 1, in <module>
  10. KeyError: 'name'
  11. >>>
  12. >>> arr=[]
  13. >>> arr[2]
  14. Traceback (most recent call last):
  15. File "<stdin>", line 1, in <module>
  16. IndexError: list index out of range
  17. >>> int(a)
  18. Traceback (most recent call last):
  19. File "<stdin>", line 1, in <module>
  20. NameError: name 'a' is not defined
  21. >>> int('a')
  22. Traceback (most recent call last):
  23. File "<stdin>", line 1, in <module>
  24. ValueError: invalid literal for int() with base 10: 'a'
  25. ###################################
  26. - IndexError
  27. d = ["mao", 'tai']
  28. try:
  29. d[10]
  30. except IndexError, e:
  31. print e
  32. ###################################
  33. - KeyError
  34. d = {'k1':'v1'}
  35. try:
  36. d['k20']
  37. except KeyError, e:
  38. print e
  39. ###################################
  40. - ValueError
  41. s1 = 'hello'
  42. try:
  43. int(s1)
  44. except ValueError, e:
  45. print e
  46. ###################################
异常 原因
AttributeError 赋值失败: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
IOError 文件操作失败: 输入/输出异常;基本上是无法打开文件
ImportError 导入失败: 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 缩进错误: 语法错误(的子类) ;代码没有正确对齐
IndexError 下标越界: 比如当x只有三个元素,却试图访问x[5]
KeyError 字段k错误: 字典里k不存在
KeyboardInterrupt Ctrl+c被按下
EOFError Ctrl+d被按下
NameError 变量不存在: 使用一个还未被赋予对象的变量
SyntaxError 代码形式错误
TypeError 对象类型错误: 传入对象类型与要求的不符合
ValueError 对象的值错误: 传入一个调用者不期望的值,即使值的类型是正确的
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它

异常应用

  • 输入的必须是数字
  • 输入的必须是y 或 n
  • 输入几次机会
  1. - 要求输入一个数字
  2. while True:
  3. try:
  4. num = raw_input("input a int num: ")
  5. num = int(num)
  6. except ValueError:
  7. print "pls enter a int num"
  8. - 要求输入的值在y n之间
  9. while True:
  10. try:
  11. op = raw_input("y/n >")
  12. op = op.lower()
  13. if op in ['y','n']:
  14. print "input correct"
  15. except Exception as e:
  16. print "pls input y or n"
  17. - 程序启动后,提示输入, 仅输出n/Nnxx程序结束
  18. while True:
  19. try:
  20. op = raw_input("Again?[y] > ")
  21. op = op.lower()
  22. if op and op[0]=="n":
  23. break
  24. except(KeyboardInterrupt,EOFError):
  25. print("pls input a y/n")
  26. - 猜一个数字,如果和内置的值相等,则退出,最多3次猜测机会.
  27. 直接回车,不算浪费机会
  28. ctrl+c无法退出
  29. 输入的必须是数字,如果不是数字则报错
  30. 已上这三种异常均需要扑捉并提示try again
  31. count = 1
  32. while True:
  33. try:
  34. if (int(input("guess a num > "))) == 100:
  35. print("correct")
  36. break
  37. if count == 3:
  38. print("th coreect count is 100")
  39. break
  40. else:
  41. print("try again")
  42. count += 1
  43. except(KeyboardInterrupt, IOError, ValueError):
  44. print "pls input a count"

[py]py异常应用的更多相关文章

  1. linux安装软件时/usr/lib/python2.7/site-packages/urlgrabber/grabber.py文件异常

    linux安装软件时,经常出现以下异常信息 Traceback (most recent call last): File , in <module> main() File , in m ...

  2. [py]py里的isinstance判断实例来源(含父类)

    Isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type(). isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系. ...

  3. [py]py常用模块小结

    - python md5校验: https://blog.csdn.net/linda1000/article/details/17581035 import hashlib hashlib.md5( ...

  4. [py]软件编程知识骨架+py常见数据结构

    认识算法的重要性 - 遇到问题? 学完语言,接到需求,没思路? 1.学会了语言,能读懂别人的代码, 但是自己没解决问题的能力,不能够把实际问题转换为代码,自己写出来.(这是只是学会一门语言的后果),不 ...

  5. python之模块py_compile用法(将py文件转换为pyc文件)

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件):二进制文件,是由py文件经过编译后 ...

  6. Python各种扩展名(py, pyc, pyw, pyo, pyd)区别

    扩展名 在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名.下面是几种扩展名的用法. py py就是最基本的源码扩展名 pyw pyw是另一种源码扩展名,跟py唯一的区别是 ...

  7. Pytest学习(六) - conftest.py结合接口自动化的举例使用

    一.conftest.py作用 可以理解成存放fixture的配置文件 二.conftest.py配置fixture注意事项 pytest会默认读取conftest.py里面的所有fixture co ...

  8. 如何反编译Python写的exe到py

    参考链接: https://blog.csdn.net/qq_44198436/article/details/97314626?depth_1-utm_source=distribute.pc_re ...

  9. python中如何用sys.excepthook来对全局异常进行捕获、显示及输出到error日志中

    使用sys.excepthook函数进行全局异常的获取. 1. 使用MessageDialog实现异常显示: 2. 使用logger把捕获的异常信息输出到日志中: 步骤:定义异常处理函数, 并使用该函 ...

随机推荐

  1. C#WinForm应用程序中嵌入ECharts图表

    C#WinForm应用程序中嵌入ECharts图表 程序运行效果: 下载ECharts: 官网下载ECharts :http://echarts.baidu.com/download.html 或者直 ...

  2. Orleans学习总结(六)--应用篇

    上一篇Orleans学习总结(五)--监控篇,我们这篇来说说我们项目的应用   这是我们项目的结构图   我们分别来说下各个部分 1.Zookeeper作为集群基础,至少开5个,分别在不同的物理机上 ...

  3. 隐藏响应的server,X-Powered-By

    隐藏X-Powered-By 修改 php.ini 文件 设置 expose_php = Off apache 隐藏 server 修改httpd.conf 设置 ServerSignature Of ...

  4. 免费的SSL证书(LINUX)

    贫穷限制了我的SSL. 说起来也简单,免费的SSL证书授权机构,我使用的是Certbot 选择服务器开启的服务,像我php之流,无非apache和nginx,然后选择使用的服务器类型.嗯,补充一句,这 ...

  5. linux 下修改键盘映射

    参考文档 原因: 输入 键盘原本的 “\ |”,结果映射到 "< >",而 < 与 > 对应的键名分别是 less 与 greater 查看键名: xev ...

  6. 秒秒钟提高办公技巧的6个Excel技巧

    一.职工身份证号码是否登记重复(=IF(COUNTIF(B2:B13,B2&"*")>1,"重复","")) 职工列表人数众多 ...

  7. Ubuntu下eclipse中运行Hadoop时所需要的JRE与JDK的搭配

    第一组: Eclise 版本:Indigo,Service Release 1 Build id:20110916-0149 Window-->Preferences -->Compile ...

  8. 《开源网店系统iWebShop2.0模板开发教程》的说明

    <开源网店系统iWebShop2.0模板开发教程>是网上广为流传的一个文档,有点问题. 其中的第4章: ========================================== ...

  9. 【每日一题】UVA - 1368 DNA Consensus String 字符串+贪心+阅读题

    https://cn.vjudge.net/problem/UVA-1368 二维的hamming距离算法: For binary strings a and b the Hamming distan ...

  10. git 错误 fatal: Not a valid object name: 'master'

    问题场景:新建git项目或刚为已存在项目创建了git仓库,想用git branch dev创建dev分支或用git checkout -b dev创建并切换到dev分支时报错. 原因:刚创建的git仓 ...