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 ...
随机推荐
- pandas的使用(7)--分组
pandas的使用(7)--分组
- Appium+python自动化(八)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 下(超详解)
简介 通过上一篇宏哥给各位小伙伴们的引荐,大家移动对这位美女有了深刻的认识,而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里,是不是这样呢???不要害羞直接告诉宏哥:是,就对了.宏哥要的就是这个 ...
- Prometheus 安装Alertmanager集成
Prometheus 安装Alertmanager集成 # 下载地址 地址1:https://prometheus.io/download/ 地址2:https://github.com/promet ...
- MySQL数据库 : 高级查询
根据某个字段删除重复的数据, 只保留一条: 比如uuid字段有重复的, 需要只保留一条数据, 让uuid字段不能重复, 则首先 group by uuid 查出所有数据的id最小的那条数据,作为dt表 ...
- Java学习:Junit简介
Junit简介 概述: JUnit 是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作.JUnit 可广泛用于工业和作为支架(从命令行)或IDE(如 IDEA)内单独的 ...
- 《 .NET并发编程实战》实战习题集 - 4 - 如何重用一次性资源
如何重用以下一次性资源代码呢? string text; using (var stream = new StreamReader(path)) { text = stream.ReadToEnd() ...
- 【Elasticsearch】【WEB】java web服务连接es elasticsearch始终报错,无法正常连接使用的错误解决历程
前情提要: web服务往华为云上迁移 ================内网的好环境,相关配置=================== 1.web服务关于ES的集群配置如下: elasticAddress ...
- redis 实战操作RDB和AOF快照持久化
前言:redis是我们常用的缓存方式,今天就来介绍下两种持久化的方式吧,先科普概念,再实战操作 一.RDB Redis将某一时刻的快照(备份的数据库数据)保存成一种称为RDB格式的文件中,这种格式是经 ...
- 如何提高sql查询性能到达优化程序的目的
1.关于SQL查询效率,100w数据 SQL查询效率 step by step -- setp 1.-- 建表create table t_userinfo(userid int identity(1 ...
- mssql 根据执行计划细节做优化操作
示例: 1.如果select * 通常情况下聚集索引会比非聚集索引更优. 2.如果出现Nested Loops,需要查下是否需要聚集索引,非聚集索引是否可以包含所有需要的列. 3.Hash Match ...