Python全栈-异常处理
一、异常
1.异常的定义
异常是错误发生的信号,程序一旦出错就会抛出错误信息,如果不及时处理就会程序就会随之停止运行
异常有三部分组成:
1)异常类型
2)异常追踪
3)异常的值.png)
2.异常的分类
1)语法错误
无法通过Python解释器解释的语法
2)逻辑错误
3.异常的种类
AttributeError 访问一个对象不存在的属性
IOError 输入/输出异常,例如无法打开文件
ImportError 无法引入模块或包,通常是路径问题或名称错误
IndentationError 语法错误(的子类),代码缩进错误
IndexError 下标索引超出序列边界
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译,例如语法错误
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
二、异常处理
1.语法
try:
# 代码块
except (错误类型1, ...):
# 代码块
1)单分支
try:
print('start...')
s = 1
y
l = []
l[2]
print('end...')
except NameError:
print('变量名没有赋值') # 输出结果
start...
变量名没有赋值
2)多分支
try:
print('start...')
s = 1
# y
l=[]
l[2]
print('end...')
except NameError:
print('变量名没有赋值')
except IndexError:
print('索引不存在')
# 输出结果
start...
索引不存在
3)多种异常处理同一段逻辑处理
try:
print('start...')
s = 1
# y
l=[]
l[2]
print('end...')
except (NameError,IndexError):
print('一行匹配多个错误')
4)万能异常
try:
print('start...')
s = 1
# y
l=[]
l[2]
print('end...')
except Exception as e:
print('万能异常匹配')
else:
print('不存在异常的时候才被执行')
finally:
print('有无异常都被执行')
5)获取异常值
6)try...else...(else必须与except组合使用)
else只有在被监测的代码不存在异常时才会被执行
7)try...finally...
finally无论被监测的代码是否存在异常时都会被执行
# finally的子代码块中通常放回收系统资源的代码
try:
f=open('f.txt','w',encoding='utf-8')
f.readline()
except Exception as e:
print(e)
finally:
f.close()
2.主动触发异常
raise 异常类型('.....')
3.断言
assret 条件
4.自定义异常处理
class RegisterError(BaseException):
def __init__(self,user,msg):
self.msg = msg
self.user = user
def __str__(self):
return '<user:%s %s >' % (self.user,self.msg)
raise RegisterError('zhang','登录失败')
5.异常处理使用的场景
为确保程序的可读性,应尽量少用
Python全栈-异常处理的更多相关文章
- Python全栈【异常处理】
Python全栈[异常处理] 本节内容: 1.异常处理 2.什么时候用异常处理 异常处理 1.异常处理: 异常就是程序运行时发生错误的信号,异常处理是在编程过程中为了增加友好性,在程序出现bug时一般 ...
- Python全栈之路目录结构
基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...
- 战争热诚的python全栈开发之路
从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...
- python全栈开发从入门到放弃之迭代器生成器
1.python中的for循环 l = [1,2,3,4,5,6] for i in l: #根据索引取值 print(i) 输出结果: 1 2 3 4 5 6 2.iterable 可迭代的 可迭 ...
- 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】
点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...
- python 全栈之路
目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...
- python全栈学习路线
python全栈学习路线-查询笔记 查询目录 一,硬件 十一,数据 ...
- Python全栈【Socket网络编程】
Python全栈[socket网络编程] 本章内容: Socket 基于TCP的套接字 基于UDP的套接字 TCP粘包 SocketServer 模块(ThreadingTCPServer源码剖析) ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
随机推荐
- [development][security][suricata] suricata 使用与调研
0: OISF:https://oisf.net/ 1: suricata是什么 https://suricata-ids.org/ 2:安装 https://redmine.openinfosecf ...
- H2O 笔记之安装
参考资料: 了解H2O:http://h2o-release.s3.amazonaws.com/h2o/rel-turchin/9/docs-website/h2o-docs/index.html 安 ...
- ansible源码安装
一.升级python 笔者系统为centos6.5,系统默认安装python2.6,虽然ansible官方文档要求python版本为2.6或2.7,然而许多人都说使用2.6可能出现一系列问题,所以作者 ...
- 【WebDriver】WebDriver 常用操作
WebDriver 常用操作 1 浏览器操作 2 窗口和弹框操作 3 cookies 操作 4 简单对象的定位 5 页面元素操作 6 鼠标事件 7 键盘事件 1 浏览器操作 #属性: driver.c ...
- mysql 数据操作 目录
mysql 记录的增删改查 mysql 数据操作 单表查询 mysql 数据操作 多表查询
- CentOS安装Yarn只需两步就搞定
Yarn 是一个依赖管理工具.它能够管理你的代码,并与全世界的开发者分享代码.Yarn 是高效.安全和可靠的,你完全可以安心使用.代码是通过包(有时也被称为组件). 在每一个包中会定义一个 packa ...
- 6种innodb数据字典恢复方法
6种innodb数据字典恢复方法 https://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting-datadict.html frm文件重 ...
- kafka4 副本机制
概述 每个分区有n个副本,可以承受n-1个节点故障. 每个副本都有自己的leader,其余都是follower. zk中存放分区的leader和 follower replica的信息.(get /b ...
- 给Access数据库文件减肥
原理:数据文件和普通文件在硬盘上的存放方式不一样,你清空了表里的数据,但数据库里数据没了,但该数据的位置还在.就好比一个班里的学生都离开了教室,教室没有人了,但学生的座位还在一样(哈哈,这个比喻不是很 ...
- timeUtil
/** * 字符串的日期 格式 yyyy-MM-dd * 转入参数,添加或减去它的天数,在返回字符串 */ public static String addOrDelRq(String rq,int ...