阅读文本大概需要 6 分钟
写在前面
周末的时候写了一篇文章「无问西东」,也许是这部电影背后所折射的道理说出了大多数人的心声,使得大家都深有感触,纷纷留言。
确实,于每个人而言,青春也不过只有这些日子,平平凡凡也好,轰轰烈烈也罢,只是不同的人生态度。重要的是忠于自己的内心,做让自己开心的事、有价值的事,愿且行且珍惜。
Python
1
异常简介:
2
常用操作
报出对应异常1
try:
print(3 / 0)
except ZeroDivisionError as e:
print("除数为零了")
except NameError as e:
print("变量未定义")
else: # 注意:else语句可有可无
print("代码没有问题")
print("程序继续执行")
except 常规异常的基类2
try:
print(4 / 0)
except: # 使用 except 捕获常规错误,而不使用任何的错误类型
print("程序出现了错误")
# 使用 except 带着多种异常,匹配到其中一种即报错
try:
print(5 / 0)
except(NameError, ZeroDivisionError):
print("出现了 ZeroDivisionError 或 NameError")
特殊情况3
"""
特殊:
1.错误其实是 class(类),所有的错误都继承自 BaseException,所以在
捕获的时候,它不仅捕获了该类型的错误,还把子类一网打尽
"""
try:
print(5 / 0)
except BaseException as e:
print("出现了BaseException")
except ZeroDivisionError as e: # 不会被执行
print("除数为零了")
"""
2.跨越多层调用,main 调用了 func2 ,2 调用了 1 ,
1 出现了错误,但是只要main捕获到了就可以处理
"""
def func1(num):
print(1 / num)
def func2(num):
func1(num)
def main():
func2(0)
try:
main()
except ZeroDivisionError as e:
print("调用的函数出现了错误")
try except finally4
try:
print(1 / 0)
except ZeroDivisionError as e:
print("除数为零了")
finally:
print("finally是一定会被执行的")
try:
print(1 / 0)
finally:
print("finally是一定会被执行的")
print() 语句调试5.1
"""
通过 print() 把可能有问题的变量打印出来
用 print()最大的坏处是将来还得删掉它,
想想程序里到处都是print(),运行结果也会包含很多垃圾信息
"""
def div(a, b):
print(b) # b可能会为 0
print(a / b)
div(10, 1)
assert 断言调试5.2
"""
用 print() 来查看的地方,都可以用断言(assert)来替代:
断言失败时,assert 语句本身就会抛出 AssertionError
"""
def func(num, div):
assert (div != 0), "div不能为零"
return num / div
print(func(10, 0))
logging 调试5.3
import logging
logging.basicConfig(level=logging.DEBUG)
"""
logging 的好处:允许你指定记录信息的级别,有debug,info,warning,error
4个级别,当我们指定 level=logging.INFO 时,logging.DEBUG 就不起作用了。
级别高的覆盖级别低的,所以可以输出不同级别的信息,也不用删除,最后统一控制输出各个级别的信息。
logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件
"""
def div(a, b):
logging.info(b)
print(a / b)
div(10, 0)
写在最后
最后给大家推送波福利!如果你打算入手或着正在学习Python,欢迎加入我们一起学习。后台回复「Python」,获取到你想要的资源。同时我们组建了一个Python技术学习群,里面大佬与小白都有,有良好的学习氛围。想要进群学习的,加 Mark 微信「IMark950831」,备注「加群」,期待你的到来!
好了,今天的分享就到这了,觉得写得不错的,点赞转发支持下。
点赞、转发是一种态度。