Python错误处理完全指南:从try-except-finally到捕获所有异常

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Python异常处理:完整实战指南

错误是软件开发中不可避免的一部分。即使是最精心编写的代码,也可能遇到意外情况:文件缺失、除零错误、网络连接问题等等。为了防止程序在这些情况下崩溃,Python提供了强大的异常处理机制,核心就是try-except-finally结构。

Python中的try-except-finally是如何工作的?

try-except-finally结构允许你捕获程序运行时发生的异常,并做出适当的响应。

基本语法:

try:
    # 可能引发异常的代码
except SomeException:
    # 异常处理代码
finally:
    # 无论是否发生异常都会执行的代码

各模块说明:

  • try:在此模块中放置可能引发异常的主要代码。
  • except:指定当try模块中发生异常时应执行的操作。可以指定要捕获的特定异常类型(SomeException)。
  • finally:无论try模块是否产生异常,finally模块都会执行。通常用于释放资源,如关闭文件、网络连接或数据库连接。

try-except-finally使用示例

try:
    number = int(input("请输入一个整数:"))
    result = 10 / number
    print(f"计算结果:{result}")
except ZeroDivisionError:
    print("错误:不允许除以零。")
except ValueError:
    print("错误:请输入有效的整数。")
finally:
    print("程序执行结束。")

代码运行逻辑:

  1. 程序提示用户输入一个整数。
  2. 如果用户输入0,会引发ZeroDivisionError异常,执行对应的except模块。
  3. 如果用户输入的不是整数,会引发ValueError异常,执行对应的except模块。
  4. 无论是否发生异常,finally模块都会执行,输出程序结束信息。

为什么需要finally模块?

finally模块确保无论是否发生异常,关键代码都能被执行。以下是几个常见的使用场景:

  • 关闭文件:

    file = open("data.txt", "r")
    try:
        content = file.read()
        # 处理文件内容
    finally:
        file.close()  # 确保文件被关闭
    
  • 释放资源:释放网络连接、数据库连接等使用后必须关闭或释放的资源。

  • 完成日志记录或清理临时数据:使用finally模块完成日志文件的写入,或删除程序运行过程中创建的临时文件。

处理多个异常

同一个try模块中可能引发多种不同类型的异常。Python提供了多种处理方式:

使用多个except模块

try:
    number = int(input("请输入一个数字:"))
    result = 100 / number
    print(resu                

博客

书籍推荐