一:什么是异常?

(异常就是程序运行时发生错误的信号)

  1. 错误分两种:
  2. 1.语法错误
  3. 2.逻辑错误

二:异常的种类?

(在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,一个异常标识一种错误)

  1. AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
  2. IOError 输入/输出异常;基本上是无法打开文件
  3. ImportError 无法引入模块或包;基本上是路径问题或名称错误
  4. IndentationError 语法错误(的子类) ;代码没有正确对齐
  5. IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
  6. KeyError 试图访问字典里不存在的键
  7. KeyboardInterrupt Ctrl+C被按下
  8. NameError 使用一个还未被赋予对象的变量
  9. SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
  10. TypeError 传入对象类型与要求的不符合
  11. UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
  12. 导致你以为正在访问它
  13. ValueError 传入一个调用者不期望的值,即使值的类型是正确的

常用异常

三:异常处理?

(为了保证程序的健壮性与容错性,即在遇到错误时程序不会崩溃,我们需要对异常进行处理)

(异常是由程序的错误引起,语法上的错误跟异常处理无关,必须在程序运行前就修正)

【1】如果错误发生的条件是可预知的,我们需要用if进行处理:在错误发生之前进行预防

  1. a=18
  2. while True:
  3. age=input('>>: ').strip()
  4. if age.isdigit():
  5. #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的
  6. age=int(age)
  7. if age == a:
  8. print('is your age')
  9. break
  1. 1.if判断式的异常处理只能针对某一段代码,对于不同的代码段的同类型的错误你需要重复的if来进行处理。
  2. 2.在程序中频繁重复的写与程序本身无关,与异常处理有关的if,使得代码的可读性非常的差。
  3. 3.但是并不意味着if判断无法去处理异常,只是存在1,2问题。

【2】如果错误发生的条件是不可预知的,则需要用到try...except:在错误发生之后进行处理

  1. #基本语法为
  2. try:
  3. 被检测的代码块
  4. except 异常类型:
  5. try中一旦检测到异常,就执行这个位置的逻辑
  6.  
  7. try:
  8. f=open('a.txt')
  9. g=(line.strip() for line in f)
  10. print(next(g))
  11. print(next(g))
  12. print(next(g))
  13. print(next(g))
  14. print(next(g))
  15. except StopIteration:
  16. f.close()
  1. #【1】 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。
  2. s1 = 'hello'
  3. try:
  4. int(s1)
  5. except IndexError as e: # 未捕获到异常,程序直接报错
  6. print e
  7.  
  8. # 【2】多分支
  9. s1 = 'hello'
  10. try:
  11. int(s1)
  12. except IndexError as e:
  13. print(e)
  14. except KeyError as e:
  15. print(e)
  16. except ValueError as e:
  17. print(e)
  18.  
  19. # 【3】万能异常Exception
  20. s1 = 'hello'
  21. try:
  22. int(s1)
  23. except Exception as e:
  24. print(e)
  25.  
  26. # 【4】多分支异常与万能异常
  27. # 4.1 如果你想要的效果是,无论出现什么异常,我们统一丢弃,或者使用同一段代码逻辑去处理他们,那么只有一个Exception就足够了。
  28. # 4.2 如果你想要的效果是,对于不同的异常我们需要定制不同的处理逻辑,那就需要用到多分支了。
  29.  
  30. # 【5】也可以在多分支后来一个Exception
  31. s1 = 'hello'
  32. try:
  33. int(s1)
  34. except IndexError as e:
  35. print(e)
  36. except KeyError as e:
  37. print(e)
  38. except ValueError as e:
  39. print(e)
  40. except Exception as e:
  41. print(e)
  42.  
  43. # 【6】异常的其他机构
  44. s1 = 'hello'
  45. try:
  46. int(s1)
  47. except IndexError as e:
  48. print(e)
  49. except KeyError as e:
  50. print(e)
  51. except ValueError as e:
  52. print(e)
  53. #except Exception as e:
  54. # print(e)
  55. else:
  56. print('try内代码块没有异常则执行我')
  57. finally:
  58. print('无论异常与否,都会执行该模块,通常是进行清理工作')
  59.  
  60. # 【7】主动触发异常
  61. try:
  62. raise TypeError('类型错误')
  63. except Exception as e:
  64. print(e)
  65.  
  66. # 【8】自定义异常
  67. class EgonException(BaseException):
  68. def __init__(self,msg):
  69. self.msg=msg
  70. def __str__(self):
  71. return self.msg
  72.  
  73. try:
  74. raise EgonException('类型错误')
  75. except EgonException as e:
  76. print(e)
  77.  
  78. # 【9】断言:assert 条件
  79. assert 1 == 1
  80. assert 1 == 2
  81.  
  82. # 【10】总结try..except
  83.  
  84. 1:把错误处理和真正的工作分开来
  85. 2:代码更易组织,更清晰,复杂的工作任务更容易实现;
  86. 3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;

python—异常处理的更多相关文章

  1. python异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...

  2. Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏

    一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...

  3. Python 异常处理--raise函数用法

    raise语句手工引发一个异常: "raise" [expression ["," expression ["," expression]] ...

  4. [Python学习笔记][第八章Python异常处理结构与程序调试]

    1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...

  5. python异常处理try,except,else,finally,raise

    先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...

  6. Python 异常处理

    Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...

  7. python异常处理的哲学

    所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事.异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学.限于认知能力和经验所限,不可 ...

  8. Python异常处理总结

    一.何谓异常处理 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这 ...

  9. python异常处理与断言以及日志模块

    python异常处理与断言 目录: 1.异常处理 2.断言(assert) 3.日志模块(logging) 4.修改之前的车票信息查询,把日志模块.异常处理加进去 1.异常处理 代码如下: 语法: t ...

  10. python 异常处理函数--raise

    Python 异常处理--raise函数用法 在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称.异常名称标识出具体的类: Python异常处理是那些类的对象 ...

随机推荐

  1. 初识spring boot maven管理--SpringMVC

    springboot完美的支持了springmvc,自家东西当然是支持最好的啦! @EnableAutoConfiguration自动注入了一下信息 1.包含了ContentNegotiatingVi ...

  2. 【数据结构】平衡树splay和fhq—treap

    1.BST二叉搜索树 顾名思义,它是一棵二叉树. 它满足一个性质:每一个节点的权值大于它的左儿子,小于它的右儿子. 当然不只上面那两种树的结构. 那么根据性质,可以得到该节点左子树里的所有值都比它小, ...

  3. 我的linux学习日记day4

    一.打包压缩与搜索命令 1.tar命令 -c 创建压缩文件 -x 解开压缩文件 -t 查看压缩包里有哪些文件 -j 用bzip2来压缩或解压 -z 用gzip压缩或解压 -v 显示过程 -f 目标文件 ...

  4. 手把手教你用Python网络爬虫获取网易云音乐歌曲

    前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...

  5. Reids的面试题

    1.什么是Redis?简述它的优缺点? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到 ...

  6. JSR303后端校验详细笔记

    目录 JSR303 使用步骤 关于不为空 分组校验 自定义校验 完整代码 JSR303 使用步骤 1.依赖 <!--数据校验--> <dependency> <group ...

  7. 4.4MSSQLServer常用版本介绍

    以SQL Server 2008版本为例: -SQL Server 2008 Datacenter(x86 x64 ia64)数据中心版,最强大的版本,要付费的 -SQL Server 2008 En ...

  8. ShoneSharp语言(S#)软件更新13.7版

    ShoneSharp语言(S#)编辑解析运行器 软件更新13.7版 作者:Shone 近期在写博客过程中对S#进行增强,把语法规则更新到2.0版,并同步更新软件到ShoneSharp.13.7.exe ...

  9. sql-分组查询

    分组查询: 关键字:group by 可以将查询结果分组,并返回行的汇总信息 注意: 1.出现在select后面的字段 要么是是聚合函数中的,要么就是group by 中的 2.要筛选结果 可以先使用 ...

  10. 8分钟为你详解React、Angular、Vue三大前端技术

    [引言] 当前世界中,技术发展非常迅速并且变化迅速,开发者需要更多的开发工具来解决不同的问题.本文就对于当下主流的前端开发技术React.Vue.Angular这三个框架做个相对详尽的探究,目的是为了 ...