【有书共读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语句来完成测试"""

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

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务