错误&异常
2018-09-04 15:22:24 10 举报
AI智能生成
Python错误&异常的知识点总结
作者其他创作
大纲/内容
4.调试
Ipython
交互式调试器
%debug
直接跳到
引发异常的栈帧
调用[调试器]
%pdb
出现异常后
直接调用[调试器]
调试中
可执行
任意python代码
可查看
各个[栈帧]中
对象&数据
调试器命令
h(elp)
命令列表
c(ontinue)
恢复程序执行
q(uit)
退出调试器
b(reak)
number
该行设置断点
s(tep)
单步进入
函数调用
n(ext)
执行当前行
前进下一行
a(rgs)
显示当前函数参数
切换[栈级别]
u(p)
d(own)
其他
assert
断言
判定
必须为[真]
为假 则发生异常
为假 则发生异常
使用
表达式
assert expression[, argumens]
e.g.
assert n !=0, 'n is zero!'
logging
logging.info()
允许配置[记录信息]级别
代码
import logging
logging.basicConfig(level=logging.INFO)
logging.basicConfig(level=logging.INFO)
级别
debug/ info/ warning/ error
pdb
让程序以[单步方式]运行
程式
以参数 -m pdb启动
输入命令
n
单步执行代码
p
查看变量
q
结束调试
退出程序
退出程序
pdb.set_trace()
import pdb
设置一个断点
在可能出错的地方
放一个
pdb.set_trace()
命令
p:查看变量
c: 继续运行
3.补充
上下文管理
with
语法
with context_expr [as var]
with_suite
with_suite
原理
执行完
with内的代码块
恢复到
执行前的状态
抛出异常
raise Exception('')
raise
不带参数
原样抛出
当前错误
获取异常信息
sys.exc_info()
1.概述
错误
语法错误
逻辑错误
异常
定义
由于程序【错误】 在【正常控制流】以外采取的行为
两个阶段
检测遇到【错误】 解释器出发【异常】
调用不同【操作】 即【处理异常】
常见类型
BaseException
Keyboarslnterrupt 用户中断执行
SystemExit 解释器请求退出
Exception
NameError 访问未申明变量
ZeroDivisionError 除零错误
SyntaxError 解释器语法错误
indexError 索引超出 序列范围
KeyError
访问不存在的Key
IOError
输入/输出错误
AttributeError
访问未知的对象属性
...
所有的错误类型
都继承自
BaseException
2.异常处理
try:
...
except exception1:
...
except exception2:
...
except:
...
else:
...
finally:
...
...
except exception1:
...
except exception2:
...
except:
...
else:
...
finally:
...
try
需要监测的代码
若有【异常】发生
层层比较
exception1,exception2
直到找到归属
执行语句
p.s.
语句块中【异常发生点】后的剩余语句
永远不会到达
except
语法
except Exception [as var]
几种用法
捕获多个异常
except(Exc1,... ExcN) [as var]
放入一个(元组)中
捕获所有异常
except 空except子句
except Exception
excpt BaseException
捕获后忽略错误
except exception:pass
流程
try-异常-except-finally
try-无异常-else-finally
vs
try-except
捕获异常
try-finally
用于
维持一致的行为
e.g.
关闭文件
p.s.
如果无法将【异常】交给合适的【处理器】
e.g.
except后的错误类型 不符合
同时没有 不参加的excep
【异常将继续】 向上层抛出
直到 被捕获 or 造成主程序报错
except + 错误类型 捕获 该错误类型及所有子类
不要 处理并忽略所有错误 可以
捕获【特定异常】并忽略
捕获【所有异常】并处理
原作者“数林觅风”
https://woaielf.github.io/
https://woaielf.github.io/
0 条评论
下一页