随笔 - 262  文章 - 1  评论 - 22  阅读 - 27万

Python异常的处理和检测

在Python程序执行过程中发生的异常可以通过try语句来检测,可以把需要检测的语句放置在try块里面,try块里面的语句发生的异常都会被try语句检测到,并抛出异常给Python解释器,Python解释器会寻找能处理这一异常的代码,并把当前异常交给其处理。这一过程称为捕获异常。如果Python解释器找不到处理该异常的代码,Python解释器会终止该程序的执行。

try语句有两种形式:一种是try—except;一种是try—finally。也可以是try—except—finally的组合。一个try语句可以对应一个或多个except语句,但只能对应一个finally子句。finally子句的作用是不管异常有没有发生,该语句块的代码都会被执行。这样就可以把一些不管异常有没有发生,都必须要执行的代码放置到finally子句块中。

使用try—except的语法规则如下:

我们用一个例子来说明try—except是如何工作的。案例程序很简单,要求用户输入一个数字,然后把用户输入的数字输出到屏幕上。为了更好说明try—except捕获异常的作用,下面的代码没有使用try—except语句。

当用户输入的不是数字时,上面的程序将会引发ValueError异常,程序被终止。如下图所示。

我们当然不希望发生上面的异常,但又无法预防用户输入错误的数据。在这种情况下,可以使用try—except语句来捕获因用户输入错误的数据而发生的异常,然后对异常进行处理就可以了。

上面的代码添加了try—except语句,用于对异常进行处理。把需要检测发生异常的语句放置在try子句块中,把需要处理异常的语句放置在except子句块中。except后面的ValueError是Python提供的标准异常名称,当传入函数的参数无效时,该异常被抛出。Python提供了几十个标准异常名称,用于处理在不同情况下发生的异常。

当不清楚异常需要使用哪个标准异常名称时,可以直接使用BaseException异常名称或Exception异常名称,BaseException异常是所有异常的基类,Exception异常是常规错误的基类。下表列出了Python提供的标准异常的名称。

表格1 Python提供的标准异常名称列表

try语句块的任何一条语句抛出异常时,后面的语句将不再执行,此时的控制权已经移交给except语句块。但在一些特殊情况下,这样的处理方式会存在一些问题,例如在一段打开文件并写入数据到文件的代码中,对文件的打开、写入、关闭等操作代码都放置在try语句块中,当执行写入文件的操作抛出异常时,后面关闭文件的语句将不会被执行,从而导致一些系统资源不能被及时释放。在这样的情况下,可以使用finally子句来解决这些问题。

在上面的代码中,文件关闭语句被放置在finally语句块中,不管try语句块中代码是否发生异常,打开的文件都将会关闭。

posted on   独上兰舟1  阅读(195)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示