• python 之异常处理结构


    在这里插入图片描述

    常见的异常处理表现形式

    在 Python 中,常见的异常类型会因为不同的错误情况而触发。以下是一些常见的异常及其表现形式:

    1. SyntaxError

    • 表现形式:通常是由于语法错误导致的,Python 解释器会在发现错误的位置产生异常。
    • 示例:缺少冒号、拼写错误或语法错误等。
    if True
        print("Hello, World!")
    
    • 1
    • 2

    2. NameError

    • 表现形式:尝试访问不存在的变量或函数时引发。
    • 示例:拼写错误或未定义变量。
    print(unknown_variable)
    
    • 1

    3. TypeError

    • 表现形式:当对一个类型无法执行所需操作时引发。
    • 示例:将不同类型的对象进行错误的操作。
    a = "10"
    b = 5
    result = a + b  # 无法将字符串和整数相加
    
    • 1
    • 2
    • 3

    4. IndexError

    • 表现形式:尝试访问不存在的索引时引发。
    • 示例:访问列表、元组或字符串中不存在的索引位置。
    my_list = [1, 2, 3]
    print(my_list[5])  # 访问不存在的索引位置
    
    • 1
    • 2

    5. KeyError

    • 表现形式:尝试访问字典中不存在的键时引发。
    • 示例:访问字典中不存在的键。
    my_dict = {'a': 1, 'b': 2}
    print(my_dict['c'])  # 访问不存在的键
    
    • 1
    • 2

    6. ZeroDivisionError

    • 表现形式:尝试除以零时引发。
    • 示例:除数为零的情况。
    result = 10 / 0
    
    • 1

    7. FileNotFoundError

    • 表现形式:当尝试打开一个不存在的文件时引发。
    • 示例:尝试打开不存在的文件路径。
    with open('nonexistent_file.txt', 'r') as file:
        content = file.read()
    
    • 1
    • 2

    这些异常类型是 Python 中常见的一部分,了解它们可以帮助你更好地调试和处理代码中可能出现的错误。

    try……except …… 结构

    try-except 结构是Python中用于异常处理的主要机制。它允许你编写代码来处理可能出现的异常情况,避免程序终止执行。下面是try-except结构的基本形式:

    try:
        # 尝试执行的代码块
        # 可能会引发异常的代码
        pass
    except SomeException as e:
        # 处理特定类型的异常
        # e是异常对象,包含异常信息
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1. try

    • try 块是用来包裹可能会引发异常的代码。在try块中编写可能引发异常的代码,如文件操作、数学运算、函数调用等。

    2. except

    • except 块用于捕获和处理特定类型的异常。当try块中的代码引发指定类型的异常时,Python会跳转到相应的except块来处理异常。
    • as 关键字将异常对象赋值给指定的变量,通常习惯用e表示异常对象。你可以使用这个变量来获取关于异常的信息,比如异常类型、错误消息等。

    示例:

    try:
        result = 10 / 0  # 尝试除以零
    except ZeroDivisionError as e:
        print("除零错误发生:", e)
    
    • 1
    • 2
    • 3
    • 4

    在这个例子中,try块中的除法操作会引发ZeroDivisionError异常。except块会捕获这个异常,并打印相关信息。

    多个except

    你也可以使用多个except块来处理不同类型的异常:

    try:
        # 一些可能会引发异常的代码
        pass
    except ValueError as e:
        # 处理特定类型的异常
        pass
    except (TypeError, ZeroDivisionError) as e:
        # 处理多个异常类型
        pass
    except Exception as e:
        # 处理所有异常
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    多个except块按顺序匹配异常类型,执行第一个能匹配的块,其他的块不会执行。

    try-except结构允许在程序中处理潜在的错误,使程序更加健壮和稳定。

    try……except ……else 结构

    try-except-else 结构是 Python 中用于异常处理的一种机制,它允许在 try 块中捕获异常,然后在没有发生异常时执行一些代码。下面是该结构的基本形式:

    try:
        # 尝试执行的代码块
        # 可能会引发异常的代码
        pass
    except SomeException as e:
        # 处理特定类型的异常
        pass
    else:
        # 在没有异常时执行的代码块
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    结构说明:

    • try 块中包含可能引发异常的代码。
    • except 块用于捕获并处理特定类型的异常。
    • else 块中的代码在没有异常发生时执行。

    示例:

    try:
        result = 10 / 2  # 尝试除法运算
    except ZeroDivisionError as e:
        print("除零错误发生:", e)
    else:
        print("没有发生异常,执行除法操作成功")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这个例子中,由于除数不是零,所以没有引发ZeroDivisionError异常。因此,else块中的代码将被执行,打印"没有发生异常"的消息。

    else块通常用于处理除非引发异常之外的其他情况。如果try块中的代码没有引发异常,那么else块中的代码将被执行。

    这种结构可以让你将异常处理的代码和正常逻辑的代码分开,提高代码的可读性,并且只有在没有异常发生时才执行特定的操作。

    try ……except ……finally 结构

    try-except-finally 结构是 Python 中用于异常处理的一种机制,它允许你在出现异常或没有异常时都执行一些必要的清理操作。下面是该结构的基本形式:

    try:
        # 尝试执行的代码块
        # 可能会引发异常的代码
        pass
    except SomeException as e:
        # 处理特定类型的异常
        pass
    finally:
        # 无论是否发生异常,都会执行的代码块
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    结构说明:

    • try 块中包含可能引发异常的代码。
    • except 块用于捕获并处理特定类型的异常。
    • finally 块中的代码无论是否发生异常都会执行。

    示例:

    try:
        file = open("example.txt", "r")  # 尝试打开文件
        content = file.read()
    except FileNotFoundError as e:
        print("文件未找到:", e)
    finally:
        file.close()  # 无论是否发生异常,关闭文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这个例子中,try 块尝试打开一个文件,如果文件未找到,则会引发 FileNotFoundError 异常。except 块用于捕获这个异常,finally 块中的代码则无论是否发生异常,都会执行文件关闭操作。

    finally 块通常用于清理资源,例如关闭文件、释放网络连接、释放数据库连接等。无论是否发生异常,finally 块中的代码都会被执行。这确保了资源的正确释放,即使出现了异常情况。

  • 相关阅读:
    经典猜数游戏(python类封装)
    crontab定时任务
    Java 核心技术卷 I —— 第1章 Java 程序设计概述
    【css | linear-gradient】linear-gradient()的用法
    opencv的极线几何
    java-php-net-python-球鞋购物网站计算机毕业设计程序
    go-05-常量
    封装v-loading全局自定义指令
    虚拟机开启网络代理设置
    系统的频域分析法-----Chap4_1-4
  • 原文地址:https://blog.csdn.net/weixin_74850661/article/details/134276043