[Python学习篇] Python异常

什么是异常?

异常(Exception)是指在程序执行过程中发生的错误事件,它会中断程序的正常执行流程。异常可以由程序中的错误引发,也可以通过主动抛出异常来处理特殊情况。Python 使用异常处理机制来捕获和处理这些错误,以避免程序崩溃,并允许程序有机会做出适当的响应。

语法:

使用 try-except 块来捕获和处理异常。

try:
    # 可能引发异常的代码
    # raise 用于主动抛出异常
except Exception as e:        # 捕获指定异常类型
    # 处理异常的代码
else:
    # 如果没有发生异常,执行这部分代码
finally:
    # 无论是否发生异常,都会执行这部分代码

示例:

try:
    1 / 0  # 除零异常
except Exception as e:
    print(f"发生异常了,except处理异常,异常信息:{e}")
else:
    print("没有异常,else执行")
finally:
    print("无论是否发生异常,finally都执行")

捕获指定异常类型

捕获指定异常,有多个except 时,except依次进行捕获,如果捕获到指定异常,后面的except不再进行捕获。except也可以传元组类型,例如 except(异常类型1, 异常类型N)

try:
    # result = 10 / 0     # 除零异常
    open("aaaaaa.sqsfa", "r")  # 文件不存在异常
except (ZeroDivisionError, IndexError) as e:  # 捕获指定异常,指定异常不存在,继续向下执行下一个except捕获
    print("捕获指定异常")
except Exception as e:
    print("捕获所有异常")
else:
    print("没有异常")
finally:
    print("无论是否发生异常,这部分代码都会执行")

主动抛出异常 raise 

try:
    raise ZeroDivisionError
except ZeroDivisionError as e:
    print("发生异常")
finally:
    print("无论是否发生异常,这部分代码都会执行")

自定义异常

# 自定义异常
class MyCustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(self.message)


# 使用异常
try:
    # raise 抛出异常
    raise MyCustomError("我是异常信息")
except MyCustomError as e:
    print(f"捕获到自定义异常: {e}")  # 捕获到自定义异常: 我是异常信息

异常的传递

如果在 try 块中没有捕获到异常,异常会继续向外传播,直到被捕获或到达顶层,这时程序会终止并打印堆栈跟踪(traceback)。

相关推荐

  1. python-学习笔记:异常处理

    2024-07-13 17:30:04       48 阅读
  2. Python基础学习笔记——异常

    2024-07-13 17:30:04       20 阅读
  3. Python-异常

    2024-07-13 17:30:04       30 阅读
  4. Python异常

    2024-07-13 17:30:04       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 17:30:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 17:30:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 17:30:04       45 阅读
  4. Python语言-面向对象

    2024-07-13 17:30:04       55 阅读

热门阅读

  1. LeetCode题练习与总结:最小栈--155

    2024-07-13 17:30:04       15 阅读
  2. C++catch (...)陈述

    2024-07-13 17:30:04       13 阅读
  3. git切换远程仓库地址

    2024-07-13 17:30:04       19 阅读
  4. 自动发送每日电子邮件报告的 Python 脚本

    2024-07-13 17:30:04       14 阅读
  5. 使用Spring Boot集成Zipkin分布式追踪

    2024-07-13 17:30:04       16 阅读
  6. Flink实时开发添加水印的案例分析

    2024-07-13 17:30:04       18 阅读
  7. json保存文件乱码

    2024-07-13 17:30:04       18 阅读
  8. 神经网络——数据预处理

    2024-07-13 17:30:04       18 阅读
  9. C 标准库 - <stdio.h>

    2024-07-13 17:30:04       17 阅读
  10. 等保2.0对云计算有哪些特定的安全要求?

    2024-07-13 17:30:04       18 阅读
  11. [Spring Boot]Rest服务调用远程Get、Post请求

    2024-07-13 17:30:04       18 阅读