Python3 异常
异常 --- 程序执行时产生的事件,为Python对象
《Python学习手册》笔记
异常总是通过实例对象来识别
默认的异常处理器 --- 打印标准出错信息(包括引发的异常和堆栈跟踪-异常发生时的程序行和函数清单。)
堆栈跟踪:从旧到新的顺序列出异常
异常作用:
- 错误处理
- 事件通知
- 特殊情况处理
- 终止行为
- 非常规控制流程
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:
类异常优点:
- 提供类型分类,便于以后修改;
- 附加状态信息;
- 支持继承;
- 超类可以捕捉子类异常;
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.属性进行访问
提供异常细节和异常方法 --- 提供状态信息,通过定制类的属性和行为
异常设计:
- 嵌套异常处理器,语法嵌套,实现复杂控制;
- 异常不总是错误,如input函数文件结尾EOFError;
- 函数信号条件,当满足条件时引发异常,用以表达结果信号;
- 特殊代码块的终止操作,如文件/服务器连接;
- try外调试,使用sys.exc_info()读取最近发生异常;
- 利用try/except:/else进行进程测试;
设计注意:
- try包装内容;
- 避免捕捉太多或过少;
Python3 异常的更多相关文章
- Python3 异常: name 'basestring' is not defined
Python3 异常: name 'basestring' is not defined 问题分析: python3 里已经没有basestring 类型,用str代替了basestring : 解决 ...
- (转)Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding
基于python3.6.1版本,在一个.py文件中,加入这3行:import requests, re, sysreload(sys)sys.setdefaultencoding("utf- ...
- 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- ...
- Python3 异常与断言
1.异常 当出现错误时,程序就会发生异常 num1=input('Please input a num1: ') num2=input('Please input a num2: ') print(f ...
- Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding'
基于python3.6.1版本,在一个.py文件中,加入这3行: import requests, re, sys reload(sys) sys.setdefaultencoding("u ...
- python2和Python3异同总结
1. python3 异常不再接收逗号(,)作为参数: ## python3 中这样可以正常运行 try: print("在这里执行的代码,有异常进入except") except ...
- Python之路,第十五篇:Python入门与基础15
python3 异常 异常(基础) 什么是错误? 错误是指由于逻辑或语法错误等,导致一个程序已无法正常执行的问题. 什么是异常? 异常是程序出错时标识的一种状态,当异常发生时,程序不会再向下执行, ...
- Python3 捕捉异常
可以通过try/except语句来实现捕获异常,如下: bpython version 0.15 on top of Python 3.5.1+ /usr/bin/python3 >>&g ...
- Python3开发过程常见的异常(最近更新:2019-04-26)
持续更新中... 常见异常解决方案 1.Base Python3.7环境相关:https://www.cnblogs.com/dotnetcrazy/p/9095793.html 1.1.Indent ...
随机推荐
- centos7上配置mysql8的主从复制
注意:1.主库:10.1.131.75,从库:10.1.131.762.server-id必须是纯数字,并且主从两个server-id在局域网内要唯一. [主节点]vi /etc/my.cnf[mys ...
- js 编译原理
引擎:从头到尾负责整个javaScript 程序的编译过程和执行过程. 编译器: 负责语法分析以及代码的生成. 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询, 并实施一套非常严格的 ...
- @Bean修饰的方法参数的注入方式
@Bean修饰的方法参数的注入方式: 方法参数默认注入方式为Autowired,即先根据类型匹配,若有多个在根据名称进行匹配. 1:复杂类型可以通过@Qualifier(value=“XXX”)限定; ...
- 【题解】C2Crni - Crni [COCI2010] [SP7884]
[题解]C2Crni - Crni [COCI2010] [SP7884] 传送门:\(\text{C2Crni - Crni}\) \(\text{[COCI2010]}\) \(\text{[SP ...
- Redis(九)高可用专栏之《简介篇》
在互联网的大趋势下,用户体验.服务的可用性日趋重要.任何一个服务的不可用,都可能导致连锁式功能故障. 前言 高可用模型的已经逐渐形成一种套路: 主备/主从模式 集群模式 主备/主从模式 至少有两台服务 ...
- Go语言-1-标识符与变量
目录 1. Go标识符 1.1 Go关键字 1.2 常量标识符(4个) 1.3 空白标识符(1个) 1.4 内置数据类型标识符 1.5 内置函数(15个) 2. Go语言操作符 3. Go语言变量 3 ...
- WPF 精修篇 动画组TransformGroup
原文:WPF 精修篇 动画组TransformGroup 动画分组 TransformGroup 一个元素可能要有缩放 ScaleTransform和移动 TranslateTransform等多个效 ...
- 1-RocketMq 学习 中文文档(一)
原文:https://blog.csdn.net/weixin_40533111/article/details/84451096 1.基本概念及优势 rocketmq是一个基于发布订阅队列模型的消息 ...
- JDK10、JDK11、JDK12新特性
JDK10新特性 1.var声明变量 很多人抱怨Java是一种强类型,需要引入大量的样板代码.甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的.许多流行的编程语言 ...
- bundler-sfm windows下编译过程中出现的错误
一.“sysdep1.h”文件缺失 错误提示: fatal error C1083: 无法打开包括文件: “sysdep1.h”: No such file or directory 这些作为这个软件 ...