python 异常处理 try, except, finally 的详细用法

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


✅ 一、基本语法结构

try:

    # 可能会出错的代码块

except 错误类型1:

    # 处理错误类型1的代码

except 错误类型2 as e:

    # 处理错误类型2的代码,并将错误信息保存到变量 e 中

except:

    # 捕获所有未被前面 except 捕获的异常(慎用)

else:

    # 如果 try 中没有发生异常,则执行这个块

finally:

    # 不论是否发生异常,都会执行这个块(常用于资源清理)‍

✅ 二、详细讲解

1. try 块

包含你认为可能会引发异常的代码。

程序会尝试执行这段代码,如果出现异常就会跳转到对应的 except 块中。

2. except 块

用来捕获并处理特定类型的异常。

可以有多个 except 块,分别处理不同类型的异常。

使用 as 关键字可以将异常对象保存下来,方便查看错误信息。

示例:捕获具体异常

try:
    result = 10 / 0
except ZeroDivisionError:
    print("不能除以零!")
示例:捕获多个异常类型
try:
    x = int(input("请输入一个数字: "))
    y = 10 / x
except ValueError:
    print("输入不是有效的整数!")
except ZeroDivisionError:
    print("不能除以零!")
示例:捕获所有异常(不推荐滥用)
try:
    something_risky()
except:
    print("发生了未知错误!")

⚠️ 注意:尽量不要使用空的 except:,这样会屏蔽所有的错误,包括程序员预期之外的异常,不利于调试。

3. else 块(可选)

如果 try 块中 没有发生任何异常,则会执行 else 块中的代码。

通常用于放置那些只有在没有异常时才应该执行的代码。

示例:​​​​​​​

try:
    num = int(input("请输入一个整数: "))
except ValueError:
    print("输入不是整数!")
else:
    print(f"你输入的数字是 {num}")

4. finally 块(可选)

不管有没有异常,finally 块总会被执行。

通常用于释放资源,如关闭文件、网络连接等。

示例:​​​​​​​

try:
    file = open("test.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("文件不存在!")
finally:
    print("不管有没有错误,我都会执行!")
    # 即使上面有return或break,也一定会执行‍

✅ 三、完整示例​​​​​​​

def divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        print("错误:除数不能为零!")
    except TypeError as e:
        print(f"类型错误:{e}")
    else:
        print(f"结果是:{result}")
    finally:
        print("无论成功与否,都会执行 finally 块")
# 测试调用
divide(10, 2)     # 正常情况
divide(10, 0)     # ZeroDivisionError
divide(10, 'a')   # TypeError‍

✅ 四、抛出异常(raise)

你可以主动抛出异常,使用 raise 关键字。​​​​​​​

def check_age(age):
    if age < 0:
        raise ValueError("年龄不能小于0")
    print("年龄合法")
try:
    check_age(-5)
except ValueError as e:
    print(e)‍

✅ 五、自定义异常类(进阶)

你可以继承 Exception 类来创建自己的异常类型:​​​​​​​

class InvalidEmailError(Exception):
    def __init__(self, message="邮箱格式不正确"):
        self.message = message
        super().__init__(self.message)
def validate_email(email):
    if "@" not in email:
        raise InvalidEmailError()
try:
    validate_email("invalid-email")
except InvalidEmailError as e:
    print(e)‍

✅ 六、总结表格

  

✅ 七、最佳实践建议

尽量只捕获你需要的异常类型,避免“裸露”的 except:。

使用 finally 来释放资源(如文件、数据库连接等)。

使用 else 避免不必要的异常嵌套。

合理使用 raise 抛出自定义异常,提高程序可读性和可维护性。

不要忽略异常,至少打印日志或记录错误信息。‍

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值