1.异常的定义

程序运行时检测到错误而导致解释器无法继续执行,反而出现一些错误的提示

2.捕捉异常全过程(重点)

    try:print("可能产生异常的代码")except Exception as e:print("处理异常错误的代码")else:print("没有捕获到异常")finally:print("无论异常是否产生都要执行")

总结:

  • try:

处理可能产生异常的代码

  • except

处理异常错误的代码
如果只捕捉一个异常,一般写成except Exception as e:
捕获多个异常时,except (IOError,NameError) as e:其中元祖中的异常可以根据代码需求填写.
当捕获多个异常时,可以把要捕获的异常的名字,放到except 后,并使用元组的方式仅进行存储

  • else

没有捕获到异常时执行

  • finally

无论异常是否产生都要执行部分,比如文件关闭,释放锁,把数据库连接返还给连接池等

3.异常的传递

异常的传递主要有try嵌套方式和函数嵌套调用2种方式:

  • 如果try嵌套,那么如果里面的try没有捕获到这个异常,那么外面的try会接收到这个异常,然后进行处理,如果外边的try依然没有捕获到,那么再进行传递
  • 如果一个异常是在一个函数中产生的,例如函数A---->函数B---->函数C,而异常是在函数C中产生的,那么如果函数C中没有对这个异常进行处理,那么这个异常会传递到函数B中,如果函数B有异常处理那么就会按照函数B的处理方式进行执行;如果函数B也没有异常处理,那么这个异常会继续传递,以此类推。。。如果所有的函数都没有处理,那么此时就会进行异常的默认处理

4.自定义异常以及抛出异常raise

    class MyError(Exception): # 自定义异常,必须继承 Exceptiondef __init__(self, age):self.age = agedef __str__(self):  # __str__返回的字符串就是异常的描述信息return '年龄不能小于 0, 您输入的是 %d' % self.ageage = int(input('请输入年龄:'))try:if age < 0:raise MyError(age)  # 抛出异常,raise 异常名()except MyError as exp:print('捕捉到异常,exp=', exp)

5.异常模块

Exceptions 模块提供了标准异常的层次结构. Python启动的时候会自动导入 这个模块, 并且将它加入到__builtin__模块中. 也就是说, 一般不需要手动导入这个模块.

  • Exception 是所有异常的基类. 强烈建议(但不是必须)自定义的异常异 常也继承这个类.
  • SystemExit(Exception) 由 sys.exit 函数引发. 如果它在最顶层没有被 try-except 语句捕获, 那么解释器将直接关闭而不会显示任何跟踪 返回信息.
  • StandardError(Exception) 是所有内建异常的基类(除 SystemExit 外).
  • KeyboardInterrupt(StandardError) 在用户按下 Control-C(或其他打 断按键)后 被引发. 如果它可能会在你使用 “捕获所有” 的 try-except 语句时导致奇怪的问题.
  • ImportError(StandardError) 在 Python 导入模块失败时被引发.
  • EnvironmentError 作为所有解释器环境引发异常的基类. (也就是说, 这些异常一般不是由于程序 bug 引起).
  • IOError(EnvironmentError) 用于标记 I/O 相关错误.
  • OSError(EnvironmentError) 用于标记 os 模块引起的错误.
  • WindowsError(OSError) 用于标记 os 模块中 Windows 相关错误.
  • NameError(StandardError) 在 Python 查找全局或局部名称失败时被引 发.
  • UnboundLocalError(NameError) , 当一个局部变量还没有赋值就被使用 时, 会引发这个异常. 这个异常只有在 2.0 及之后的版本有; 早期版本 只会引发一个普通的 NameError .
  • AttributeError(StandardError) , 当 Python 寻找(或赋值)给一个实 例属性, 方法, 模块功能或其它有效的命名失败时, 会引发这个异常.
  • SyntaxError(StandardError) , 当解释器在编译时遇到语法错误, 这个异常就被引发.
  • IndentationError(SyntaxError) 在遇到非法的缩进时被引发. 该异常只用于 2.0 及以后版本, 之前版本会引发一个 SyntaxError 异常.
  • TabError(IndentationError) , 当使用 -tt 选项检 查不一致缩进时有可能被引发. 该异常只用于 2.0 及以后版本, 之前版 本会引发一个SyntaxError 异常.
  • TypeError(StandardError) , 当给定类型的对象不支持一个操作时被引 发.
  • AssertionError(StandardError) 在 assert 语句失败时被引发(即表达 式为 false 时).
  • LookupError(StandardError) 作为序列或字典没有包含给定索引或键时所引发异常的基类.
  • IndexError(LookupError) , 当序列对象使用给定索引数索引失败时(不存在索引对应对象)引发该异常.
  • KeyError(LookupError) 当字典对象使用给定索引索引失败时(不存在索 引对应对象)引发该异常.
  • ArithmeticError(StandardError) 作为数学计算相关异常的基类.
  • OverflowError(ArithmeticError) 在操作溢出时被引发(例如当一个整 数太大, 导致不能符合给定类型).
  • ZeroDivisionError(ArithmeticError) , 当你尝试用 0 除某个数时被引发.
  • FloatingPointError(ArithmeticError) , 当浮点数操作失败时被引发.
  • ValueError(StandardError) , 当一个参数类型正确但值不合法时被引 发.
  • UnicodeError(ValueError) , Unicode 字符串类型相 关异常. 只使用在 2.0 及以后版本.
  • RuntimeError(StandardError) , 当出现运行时问题时引发, 包括在限制模式下尝试访问外部内容, 未知的硬件问题等等.
  • NotImplementedError(RuntimeError) , 用于标记未实现的函数, 或无效的方法.
  • SystemError(StandardError) , 解释器内部错误. 该异常值会包含更多的细节 (经常会是一些深层次的东西, 比如 “eval_code2: NULL globals” ) .
  • MemoryError(StandardError) , 当解释器耗尽内存时会引发该异常. 注 意只有在底层内存分配抱怨时这个异常才会发生; 如果是在你的旧机器 上, 这个异常发生之前系统会陷入混乱的内存交换中.

你可以创建自己的异常类(参考第四点). 只需要继承内建的 Exception 类(或者它的任意一个合适的子类)即可, 有需要时可以再重载它的__str__方法 ,一般常见的异常类有:

Exception
KeyboardInterrupt
ImportError
NameError
AttributeError
SyntaxError
TypeError
IndexError
KeyError
ValueError

以上内容仅是代表个人总结 若有错误之处,还请批评指正,欢迎大家一起学习!

Python Exceptions 异常处理全过程以及异常模块详细解析相关推荐

  1. python 异常处理模块_Python Exceptions 异常处理全过程以及异常模块详细解析

    1.异常的定义 程序运行时检测到错误而导致解释器无法继续执行,反而出现一些错误的提示 2.捕捉异常全过程(重点) try: print("可能产生异常的代码") except Ex ...

  2. #21天学习挑战赛#Python入门之mac安装第三方模块——详细教程

    开卷有益!对于python小白而言,学习每前进一步都会遇到门槛.尽管带队老师在紧锣密鼓地往前开通学习资料权限,可是python小白还在后面蜗牛般爬行,这不,在mac终端安装第三方模块就成了一道拦路门槛 ...

  3. python 日志 logging模块(详细解析)

    1 基本使用 转自:https://www.cnblogs.com/wf-linux/archive/2018/08/01/9400354.html 配置logging基本的设置,然后在控制台输出日志 ...

  4. python logger.debug_python中的logger模块详细讲解

    logger 提供了应用程序可以直接使用的接口 handler将(logger创建的)日志记录发送到合适的目的输出 filter提供了细度设备来决定输出哪条日志记录 formatter决定日志记录的最 ...

  5. Python教程:os 与 sys 模块详细用法

    os 模块 os 模块主要用来进行与操作系统进行交互,它的导入方式为: import os os 模块主要涉及文件操作.文件夹操作.路径操作和其他操作四个方面. 文件操作 通过 os 模块对文件直接进 ...

  6. 用Python实现快速排序和冒泡排序,代码+详细解析

    1.冒泡排序 冒泡排序:每一次相邻的两个数做比较,大的往后移动一位,每次循环都会把最大的值(升序)或最小的值(降序)放在末端 . # a = [7, 8, 5, 45, 91, 1, -10, 0] ...

  7. python异常模块raise的概念以及基本用法

    当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常.一旦执行了raise语句,raise后面的语句将不能执行.        raise():  用raise语句来引发一个 ...

  8. python 异常回溯_Python 代码的异常处理和打印异常信息

    前言 1.Python的异常处理可以向用户准确反馈出错信息,所有异常都是基类Exception的子类.自定义异常都是从基类Exception中继承.Python自动将所有内建的异常放到内建命名空间中, ...

  9. python 异常 模块 包

    #什么是异常 当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常" #捕获异常 使用try:...except:...来捕获异常, ...

最新文章

  1. 怎样获取当前页面值php,想要得到当前页面的所有url参数信息怎么用PHP来实现?...
  2. java 示例_功能Java示例 第2部分–讲故事
  3. 建立、遍历二叉树(二叉链表)
  4. Python学习---入门导学篇
  5. Hibernate学习之createSQLQuery与createQuery的区别及使用
  6. xpath下面的xpath_深入研究XPATH查询
  7. 3Ddungeon-------三维搜索-----偷个懒 把 亡命逃窜 的代码修改了一下 拿来用了
  8. linux服务器内存占用太高-释放内存
  9. 电力系统如何实现时间同步
  10. 17种最重要的项目管理方法
  11. plsql导出数据字典
  12. java调用打印机打印
  13. C语言用结构体实现串口协议
  14. 报税远程服务器返回错误,紧急 | 增值税申报失败,调用系统服务出错,怎么办?...
  15. 内网安全 域环境的搭建(模仿真实内网环境 做渗透测试.)
  16. 互联网让我的人生逆袭
  17. 2021年茶艺师(中级)复审考试及茶艺师(中级)理论考试
  18. PDF图标异常的解决方法
  19. java pdf 签名 修改_java – 替换PDF中的签名内容
  20. 带你快速看完9.8分神作《Effective Java》—— 序列化篇(所有RPC框架的基石)

热门文章

  1. ubuntu 安装python编辑器 pycharm
  2. python各位大佬们的绘画,说不定有你想要的!
  3. mysql 5.6 mysqli_php-如何安装MySQLi
  4. Python的glob模块
  5. vue 项目打包报错 CSS minification error
  6. 机器视觉初步13:3D相机介绍
  7. 【学习笔记】 IDEA中导入mysql的驱动jar包
  8. flashlight问题调试
  9. 程序人生 - 空调除湿与制冷的区别?
  10. 损失函数——均方误差