Python入门 17-11

mac2024-11-22  47

Python入门 17-11

希望你能明白。就像往海里扔石子,你可以执着的一直扔,也许用了几十年,几百年,填满了海,但是有什么意义呢。扔石子的人会累,被扔石子的海会逐渐消失且无可奈何。##

笔记部分

错误处理

try

高级语言通常都内置了一套try…except…finally…的错误处理机制,Python也不例外

try: print(‘try…’) r = 10 / 0 print(‘result:’, r) except ZeroDivisionError as e: print(‘except:’, e) finally: print(‘finally…’) print(‘END’)

输出结果是这样的

try… result: 5 finally… END

错误应该有很多种类,如果发生了不同类型的错误,应该由不同的except语句块处理。

例如int(‘a’)会被ValueError捕获,因为’a’没法转化成一个整数值。

else

可以添加一个else语句来表明没有错误发生的情况 else: print(‘no error!’)

Python的错误其实也是class,所有的错误类型都继承自BaseException,所以在使用except时需要注意的是,它不但捕获该类型的错误,还把其子类也“一网打尽。

调用栈

如果错误没有被捕获,它就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出。 记录错误

如果不捕获错误,自然可以让Python解释器来打印出错误堆栈,但程序也被结束了。既然我们能捕获错误,就可以把错误堆栈打印出来,然后分析错误原因,同时,让程序继续执行下去。 Python内置的logging模块可以非常容易地记录错误信息,用法是

import logging

同样是出错,但程序打印完错误信息后会继续执行,并正常退出。通过配置,logging还可以把错误记录到日志文件里,方便事后排查。

抛出错误

相当于自己定义一个错误的class。
最新回复(0)