异常 --- 程序执行时产生的事件,为Python对象

《Python学习手册》笔记

异常总是通过实例对象来识别

默认的异常处理器 --- 打印标准出错信息(包括引发的异常和堆栈跟踪-异常发生时的程序行和函数清单。)

堆栈跟踪:从旧到新的顺序列出异常

异常作用:

  1. 错误处理
  2. 事件通知
  3. 特殊情况处理
  4. 终止行为
  5. 非常规控制流程
except 捕捉异常 --- 语句定义异常处理方法(异常处理器),如果异常无法捕捉进行上层的传递
(except:)可以捕捉任何异常
else 执行没有异常发生时的行为
raise <Class or Instance>引发异常 --- <class #调用不带构造参数的类 ==> Class()>
当不包括异常名称或数值时,表示重新引发当前异常,一般在exception语句中
raise exception from otherexception --- 附加otherexception到引发异常exception的__cause__属性
finally 终止行为 --- 先执行finally代码,再传递异常
assert raise语句的简写
assert <test>, <data> 如果test为假,引发AssertionError异常,异常说明内容为data
try:
pass
#raise <class or instance>
except <name1>,<name2>,...:
<statements>
except <names>:
<statements>
else:
<statements>
finally:

类异常优点:

  1. 提供类型分类,便于以后修改;
  2. 附加状态信息;
  3. 支持继承;
  4. 超类可以捕捉子类异常;

BaseException(内置异常超类) -> (Exception) -> 异常类

sys.exc_info --- 抓取最近发生异常的方式

当无异常时返回元组(None, None, None);

当有异常时返回元组(type-异常类型, value-异常类实例, traceback-堆栈跟踪traceback对象)

内置Exception类可以看做:

  • 内置变量名
  • buildin模块内置名称
  • 标准库模块exceptions属性

BaseException --- 异常顶级根类

Exception --- 与应用相关异常的顶层根超类(除了SystemExit,KeyboardInterrupt,GeneratorExit外)

ArithmeticError --- 所有数值错误超类

OverflowError --- 识别特定的数值错误的子类

定制打印显示 --- Exception('显示内容')

定制数据和行为 --- 同类的定制,except Exception as X: X.属性进行访问

提供异常细节和异常方法 --- 提供状态信息,通过定制类的属性和行为

异常设计:

  1. 嵌套异常处理器,语法嵌套,实现复杂控制;
  2. 异常不总是错误,如input函数文件结尾EOFError;
  3. 函数信号条件,当满足条件时引发异常,用以表达结果信号;
  4. 特殊代码块的终止操作,如文件/服务器连接;
  5. try外调试,使用sys.exc_info()读取最近发生异常;
  6. 利用try/except:/else进行进程测试;

设计注意:

  1. try包装内容;
  2. 避免捕捉太多或过少;

Python3 异常的更多相关文章

  1. Python3 异常: name 'basestring' is not defined

    Python3 异常: name 'basestring' is not defined 问题分析: python3 里已经没有basestring 类型,用str代替了basestring : 解决 ...

  2. (转)Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding

    基于python3.6.1版本,在一个.py文件中,加入这3行:import requests, re, sysreload(sys)sys.setdefaultencoding("utf- ...

  3. python reload(sys)找不到,name 'reload' is not defined和Python3异常-AttributeError: module 'sys' has no att

    基于python3.6.1版本,在一个.py文件中,加入这3行:import requests, re, sysreload(sys)sys.setdefaultencoding("utf- ...

  4. Python3 异常与断言

    1.异常 当出现错误时,程序就会发生异常 num1=input('Please input a num1: ') num2=input('Please input a num2: ') print(f ...

  5. Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding'

    基于python3.6.1版本,在一个.py文件中,加入这3行: import requests, re, sys reload(sys) sys.setdefaultencoding("u ...

  6. python2和Python3异同总结

    1. python3 异常不再接收逗号(,)作为参数: ## python3 中这样可以正常运行 try: print("在这里执行的代码,有异常进入except") except ...

  7. Python之路,第十五篇:Python入门与基础15

    python3   异常 异常(基础) 什么是错误? 错误是指由于逻辑或语法错误等,导致一个程序已无法正常执行的问题. 什么是异常? 异常是程序出错时标识的一种状态,当异常发生时,程序不会再向下执行, ...

  8. Python3 捕捉异常

    可以通过try/except语句来实现捕获异常,如下: bpython version 0.15 on top of Python 3.5.1+ /usr/bin/python3 >>&g ...

  9. Python3开发过程常见的异常(最近更新:2019-04-26)

    持续更新中... 常见异常解决方案 1.Base Python3.7环境相关:https://www.cnblogs.com/dotnetcrazy/p/9095793.html 1.1.Indent ...

随机推荐

  1. nginx location笔记

    nginx location笔记= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa,可以被规则 ...

  2. HyperLogLog算法分析及其应用

    HyperLogLog 算法的原理讲解以及 Redis 是如何应用它的 探索HyperLogLog算法(含Java实现) 神奇的HyperLogLog算法 Sketch of the Day: Hyp ...

  3. Centos 7.6 安装 oracle 10.2.0.1 数据库软件

    step 1: 编辑 /etc/redhat-release :内容为redhat-4 step 2: 安装32位的软件包:yum install libXp.i686  libXt.i686  li ...

  4. SpringBoot 通过jjwt快速实现token授权

    A 10分钟了解JSON Web令牌(JWT)https://baijiahao.baidu.com/s?id=1608021814182894637&wfr=spider&for=p ...

  5. Mac下Homebrew将程序文件存在什么位置

    一般情况是这么操作的: 1.通过brew install安装应用最先是放在/usr/local/Cellar/目录下. 2.有些应用会自动创建软链接放在/usr/bin或者/usr/sbin,同时也会 ...

  6. SpringBoot2.0整合fastjson的正确姿势

            SpringBoot2.0如何集成fastjson?在网上查了一堆资料,但是各文章的说法不一,有些还是错的,可能只是简单测试一下就认为ok了,最后有没生效都不知道.恰逢公司项目需要将J ...

  7. Jpa的简介

    Jpa:是用于数据持久化的一组标准接口. 1.HelloWorld的编写 创建EntityManagerFactory 创建EntityManager 开启事务 数据持久化 提交事务 关闭Entity ...

  8. InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's

    InvalidOperationException: Operations that change non-concurrent collections must have exclusive acc ...

  9. MySQL修炼之路二

    1. 表字段的操作 1. 语法: alter table 表名 执行动作: 2. 添加字段(add) alter table 表名 add 字段名 数据类型: alter table 表名 add 字 ...

  10. 机器学习之KMeans聚类

    零.学习生成测试数据 from sklearn.datasets import make_blobs from matplotlib import pyplot # create test data ...