错误与异常处理
错误 (Errors) :是程序中的语法或逻辑问题,例如拼写错误或缺少必要的代码结构。Python 编译阶段会直接报错,无法执行程序。
python 代码解读复制代码if True  # 语法错误:缺少冒号
    print("Error")
异常 (Exceptions) :是运行时发生的错误,程序在运行时检测到的非预期行为。如果未处理异常,程序会崩溃。
perl 代码解读复制代码print(1 / 0)  # ZeroDivisionError
print(int("abc"))  # ValueError
常见的 Python 内置异常包括:
- SyntaxError:语法错误。
- ZeroDivisionError:除数为零。
- ValueError:传入无效参数。
- TypeError:类型不匹配。
- IndexError:索引超出范围。
- KeyError:字典中找不到指定键。
- AttributeError:对象没有某个属性。
- NameError:引用未定义的变量。
- FileNotFoundError:文件未找到。
- ImportError:导入模块失败。
异常捕获与处理
try-except 结构
python 代码解读复制代码try:
    # 可能会引发异常的代码
except ExceptionType:
    # 处理异常的代码
try:
    result = 10 / 0
except ZeroDivisionError:
    print("除数不能为零!")
捕获多个异常:使用多个 except 分支或者捕获多个异常为一类。
捕获所有异常:不推荐,但在特殊情况下可能使用。
python 代码解读复制代码try:
    value = int("abc")
except ValueError:
    print("值错误!")
except TypeError:
    print("类型错误!")
    
try:
    result = 10 / 0
except (ZeroDivisionError, ValueError) as e:
    print(f"异常发生:{e}")
    
try:
    result = 10 / 0
except Exception as e:
    print(f"捕获到异常:{e}")
else 和 finally 子句
else:当 try 块没有发生异常时执行。
python 代码解读复制代码try:
    result = 10 / 2
except ZeroDivisionError:
    print("除数不能为零!")
else:
    print(f"结果是:{result}")
finally:无论是否发生异常,都会执行的代码块,常用于清理资源。
python 代码解读复制代码try:
    f = open("file.txt", "r")
except FileNotFoundError:
    print("文件未找到!")
finally:
    print("清理操作完成。")
自定义异常
1.定义自定义异常类:需要继承自Exception类:
ruby 代码解读复制代码class MyError(Exception):
    def __init__(self, message):
        self.message = message
2.抛出异常:使用 raise手动引发异常
- 可以指定异常类型和消息raise ValueError("非法值!")
- 在捕获异常中重新引发
python 代码解读复制代码
try:
    raise ValueError("测试异常")
except ValueError:
    print("捕获异常后重新引发")
    raise
python 代码解读复制代码
def check_value(value):
    if value < 0:
        raise MyError("值不能为负数!")
try:
    check_value(-1)
except MyError as e:
    print(f"捕获自定义异常:{e.message}")
常见的异常处理实践
文件操作中的异常处理
python 代码解读复制代码try:
    with open("example.txt", "r") as file:
        content = file.read()
except FileNotFoundError:
    print("文件未找到!")
 
                                    
评论记录:
回复评论: