Python 异常处理:try-except完全指南

为什么要处理异常?

程序在运行过程中难免会遇到错误——文件不存在、网络超时、类型转换失败等。良好的异常处理能让程序更健壮。

try-except 基本语法

try:
    result = 10 / 0
except ZeroDivisionError:
    print('除数不能为零!')

捕获多种异常

try:
    num = int('abc')
except (ValueError, TypeError) as e:
    print(f'转换失败: {e}')

else 和 finally

try:
    file = open('data.txt', 'r')
except FileNotFoundError:
    print('文件不存在')
else:
    content = file.read()
finally:
    file.close()

主动抛出异常

def check_age(age):
    if age < 0:
        raise ValueError('年龄不能为负数')
    if age < 18:
        raise PermissionError('未成年人不能注册')
    return True

自定义异常

class CustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(message)

try:
    raise CustomError('这是自定义异常')
except CustomError as e:
    print(f'捕获到: {e.message}')

常见异常类型

异常 触发场景
ValueError 参数值不正确
TypeError 类型不正确
KeyError 字典键不存在
IndexError 索引越界
FileNotFoundError 文件不存在
ZeroDivisionError 除数为零
TimeoutError 操作超时

总结

掌握异常处理是写出健壮代码的关键。原则是:能捕获就捕获,能不抛就不抛,抛了就要处理。