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 ...
随机推荐
- c++小学期大作业攻略(五)基于QSS的样式美化
这回真的是最后一篇了. 前面说过,我们开发过程中暂时不搭理样式问题,等最后再一起处理,那么现在就是最后处理时刻了!看到网上说QSS跟CSS差不多,我还觉得自己可以干回老本行了,结果用起来发现,QSS是 ...
- 使用python远程连接数据库
根据web连接服务的原理,我们可以通过一台电脑连接我们另一台电脑上的数据库 一.开启数据库的权限1.Mysql:1)修改访问权限首先修改可以访问的ip,把‘localhost’全部修改为‘%’,打开c ...
- 【Luogu5349】幂(分治FFT)
[Luogu5349]幂(分治FFT) 题面 洛谷 题解 把多项式每一项拆出来考虑,于是等价于要求的只有\(\sum_{i=0}^\infty i^kr^i\). 令\(f(r)=\sum_{i=0} ...
- 【05】Jenkins:用户权限管理
写在前面的话 在一个企业研发部门内部,可能存在多个运维人员,而这些运维人员往往负责不同的项目,但是有可能他们用的又是同一个 Jenkins 的不同用户.那么我们就希望实现一个需求,能够不同的用户登录 ...
- Storm 系列(九)—— Storm 集成 Kafka
一.整合说明 Storm 官方对 Kafka 的整合分为两个版本,官方说明文档分别如下: Storm Kafka Integration : 主要是针对 0.8.x 版本的 Kafka 提供整合支持: ...
- 「vue基础」一篇浅显易懂的 Vue 路由使用指南( Vue Router 上)
大家好,今天的内容,我将和大家一起聊聊 Vue 路由相关的知识,如果你以前做过服务端相关的开发,那你一定会对程序的URL结构有所了解,我没记错的话也是路由映射的概念,需要进行配置. 其实前端这些框架的 ...
- What are regsvr32, regasm and gacutil using for?(转载)
What are regsvr32, regasm and gacutil using for? Regasm.exe is used to create COM Callable Wrapper ( ...
- ABP——切换MySQL数据库
我是一名.net新手,应公司要求开始学习.net,使用的是土耳其大牛写的框架ASP.NET Boilerplate 简称ABP,是基于DDD的现代ASP.NET开发框架,ABP提供了一个启动模板用于新 ...
- DatetimeHelper类的编写
公共类 DAtaTimeHelper类的编写 public class Appointment { public DateTime StartDate { get; set; } public Dat ...
- [個人紀錄] git 疑難排解
1.git pull 時發生錯誤,要拉下來的檔案內含有檔名太長的檔案 ans: https://stackoverflow.com/questions/22575662/filename-too-lo ...