【有书共读01】《python学习手册》读书笔记十五

第三十二章:异常基础

异常

"""当我们没有特意的进行异常捕获处理时,异常会直接返回到程序的顶层,终止程序,并启用默认的异常处理器:
就是打印出标准出错消息。"""

"""由于许多程序中,我们希望异常发生以后,并不会中止整个程序,例如服务器程序,则需要把调用包装在try语句内
自行捕获异常"""

用例:

def fetcher(obj,index):
return obj[index]

x = 'zhou'

"""该样例展示了try的触发和except的执行,并且程序继续执行了最后一个打印语句"""
try:
fetcher(x,4) # got Exception
except IndexError:
print("got Exception")
print("continuing") #continuing

使用raise字段则直接引发异常

"""自定义异常类:继承Exception"""
class Bad(Exception):
pass

fianlly语句,无论是否有异常都执行finally块中的语句

def after():
try:
fetcher(x,3)
finally:
print('after fetch')
print('after try?')

after()

"""except语句可以写多条,并在最后补上else语句,标志没有错误时执行
统一try语句语法:
try -> except -> else -> finally
"""

"""assert语句"""
""""assert几乎都是用来收集用户定义的约束条件,而不是捕捉内在的程序设计错误,
因为python会自行收集这一类,即assert不必去捕获超出索引,类型不匹配,除数为0这样的错误"""
"""
assert <test> ,<data>
if debug:
if not <test>:
raise AssertionError(<data>)

"""

例子

def f(x):
assert x<0,'x must be negative'
return x ** 2
print(f(-1))

异常类

"""异常类可以多级继承方便代码的维护"""
class General(Exception): pass
class Specific1(General):pass
class Specific2(General):pass

"""异常并不一定总是为了捕获错误来设计,也可以是用以替换if...else语句来完成测试"""

#笔记##读书笔记#
全部评论

相关推荐

面了这么多场试,总有公司总喜欢压力面一个小时面试+手撕,哪里不会就点哪里,说了不会不会还继续追着问不尊重求职者,稍微有些细节记不清了,就开始怀疑项目真实性以及人格让求职者开摄像头但是自己不开,说话声音还贼小,pardon几次就开始不耐烦的不知道这个算不算,手撕的时候,面试官人跑了。。。最后快结束才来
一纸丿繁华丶:你换位思考一下,自己在职场被领导push麻了,身心俱疲,现在有个机会让你放松一下,体验一把上位者的感觉,还能看着那些高学历人才、未来自己的竞争者,抓耳挠腮、手足无措的样子,没给你当场笑出来就不错了,理解一下面试官吧。
点赞 评论 收藏
分享
05-12 17:28
已编辑
门头沟学院 硬件开发
ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务