Python-错误与异常处理

在 Python 中,错误和异常处理是编写健壮程序的重要组成部分。下面是一些关于错误和异常处理的基本知识:

错误(Errors)和异常(Exceptions):

  1. 错误: 错误是程序的语法或逻辑错误,可能导致程序无法执行。错误分为语法错误和逻辑错误。

    语法错误: 在代码的编写阶段就发现的错误,通常是由于违反了 Python 的语法规则。
    逻辑错误: 在代码的运行阶段发现的错误,通常是由于程序的逻辑错误或算法错误。

  2. 异常: 异常是程序在运行时遇到的非致命问题,它导致程序停止执行并引发异常。Python 中有许多内置的异常类型,如 ZeroDivisionErrorTypeErrorFileNotFoundError 等。

异常处理:

在 Python 中,使用 try, except, else, 和 finally 等关键字进行异常处理。

try 语句按照如下方式工作:
首先,执行try子句(在关键字try和关键字 except 之间的语句)。
如果没有异常发生,忽略子句除外,尝试子句执行后结束。
如果在执行尝试子句的过程中发生了异常,那么尝试子句余下的部分将被忽略。如果异常的类型和 except 后面的名称一致,那么对应的 except 子句将被执行。
如果一个异常没有与任何的除了匹配,那么这个异常不会传递给上层的 try 中。
一个try语句可能包含多个except子句,分别来处理不同的特定的异常,其中只有一个分支会被执行。
处理程序将仅针对对应的 try 子句中的异常进行处理,而不是其他 try 的处理程序中的异常。

基本的异常处理结构:

try:
    # 代码块,可能引发异常的地方
    result = 10 / 0
except ZeroDivisionError:
    # 异常处理代码块,处理 ZeroDivisionError 异常
    print("Cannot divide by zero!")
else:
    # 如果没有异常发生,执行此块
    print("Division successful!")
finally:
    # 无论是否发生异常,都会执行此块
    print("This block will always execute.")

捕获多个异常:

try:
    # 代码块
    result = int("abc")  # 这里会引发 ValueError
except (ValueError, TypeError) as e:
    # 处理多个异常类型
    print(f"An error occurred: {
      
      e}")

自定义异常:

# 定义一个自定义异常类
class MyCustomError(Exception):
    pass

try:
    # 触发自定义异常
    raise MyCustomError("This is a custom error.")
except MyCustomError as e:
    print(f"Caught an exception: {
      
      e}")

异常的传递:

def example_function():
    try:
        # 代码块
        result = 10 / 0
    except ZeroDivisionError:
        # 处理异常
        print("Cannot divide by zero!")
        # 将异常传递到上一层
        raise

try:
    example_function()
except ZeroDivisionError as e:
    print(f"Caught an exception from the function: {
      
      e}")

异常处理是编写稳健代码的关键部分,它可以帮助程序在发生错误时以一种有序的方式处理问题,提高程序的健壮性。

猜你喜欢

转载自blog.csdn.net/weixin_42367888/article/details/134764959