• Python异常处理——走BUG的路,让BUG无处可走


    作者:Insist--

    个人主页:insist--个人主页

    本文专栏:Python专栏

    专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注。

    目录

    一、了解python异常

    1、BUG 单词的由来

    2、什么是异常

    二、常见的Python异常类型

    三、如何捕获和处理异常

    1、常规捕捉语法

    2、捕捉指定异常

    3、捕捉多个指定的异常


    前言

    在本文中,我将介绍Python异常的基础知识,包括了解python异常,常见的异常类型,以及如何捕获和处理异常。


    一、了解python异常

    Python异常处理是一种非常重要的编程技巧,它可以让你在编写代码时避免出现许多问题。如果程序在运行时发生报错的情况(例如:除以零、访问不存在的变量等等)。Python会引发异常并停止当前代码的执行。如果没有适当的处理措施,程序将终止并显示“Traceback”信息。

    1、BUG 单词的由来

    想要了解BUG 单词的由来,就要追溯到世界第一台万用计算机(马克二型)使用时遇到的一个故障,1945年9月9日,马克二型计算机无法正常工作了,技术人员尝试了很多办法,都没有解决问题,最后在70号继电器上找到了问题。技术人员观察了许久,发现是一只飞蛾导致的无法正常工作,将飞蛾抓出来后,用透明胶布贴到“事件记录本”中,并注明了“第一个发现虫子的实例”,在此之后,便有 BUG 这个单词。

    2、什么是异常

    当程序在运行时出现错误时,Python就无法执行错误之后的代码,同时会出现报错,这就是“异常”,也就是我们常说的BUG,异常可以是由代码错误导致的,也可以是由外部因素引起的。那么我们有没有办法在程序出现异常前,将他解决掉?当然有,我们可以使用 try  +  except 语句块来捕获和处理异常。


    二、常见的Python异常类型

    在了解捕获和处理异常之前,我们先来看看这些常见的异常类型

    1、ZeroDivisionError:当我们将0作为被除数时,会发生ZeroDivisionError报错。

    0bccdc7f45c645d9893a86394e12eeae.png

    例如:

    print(1 / 0)

    解释:上面已经说过 ZeroDivisionError: 这种情况发生在将0作为被除数时。在数学中,0时不可以做成被除数的,所以 Python 会显示 ZeroDivisionError 异常。

    2、ValueError: 当操作或函数适用于值超出范围时,会发生ValueError报错。

    d64d2252c68c469681841601ee5fec31.png

    例如:

    result = int("insist")

    解释:V比如上面的代码,我们尝试将字符串“insist”转换为整数,但是我们提供的字符串不能转换为整数。所以发生了ValueError报错。

    3、KeyError: 当使用字典中不存在的键时会发生KeyError报错。

    bea04763efa54f10bf510015199e0188.png

    例如:

    1. my_dict = {1:2}
    2. value = my_dict["insist"]

    解释:如上代码,我们尝试从字典中获取一个“”insist”(不存在)键时,会发生此异常。因为在字典中我们并没有定义“insist”,所以发生了 KeyError 报错。 

    4、IndexError:当访问列表或其他支持索引的对象中不存在的索引时,会发生 IndexError 报错。

    2cef6201d6c64589b7c12fe3b6637155.png 例如:

    1. my_list = [1,2,3]
    2. value = my_list[4]

    解释:如上代码,我们尝试试图访问一个只有三个元素的列表的第四个元素。会发生此报错。


    三、如何捕获和处理异常

    在Python编程语言中,我们可以使用 try  +  except 语句块来捕获和处理异常。try语句块内写上可能引发异常的代码,而except语句块写上当异常发生时要执行的代码

    1、常规捕捉语法

    以下是一个简单的示例:

    1. try:
    2. result = 1 / 0 # 可能引发异常的代码
    3. except :
    4. print("发生错误啦") # 当除以零异常发生时要执行的代码

    输出结果:

    c16a7e91ba1745679fc4b8f9ea5aa19f.png

    在上面的示例中,当除以零异常发生时,程序将执行except语句块中的代码并打印出“发生错误啦”。如果没有异常发生,该代码块将不会执行。

    2、捕捉指定异常

    以下是一个简单的示例:

    1. try:
    2. result = 1 / 0 # 可能引发异常的代码
    3. except ZeroDivisionError:
    4. print("捕捉到了 ZeroDivisionError 错误") # 当除以零异常发生时要执行的代码

    输出结果:

    在这个例子中,我们指定了一个异常 ZeroDivisionError ,当出现此异常时会正常输出“发生错误啦”,如果没有发生我们指定的错误,那么程序会发生报错并停止程序运行。

    3、捕捉多个指定的异常

    以下是一个简单的示例:

    1. try:
    2. x = 1 / 0 # 尝试一些可能会引发异常的代码
    3. except (ZeroDivisionError, TypeError):
    4. print("捕捉到了 ZeroDivisionError 或 TypeError ") #异常时要做的事

    输出结果:

  • 相关阅读:
    初识设计模式 - 装饰器模式
    如何在Vue中实现事件处理?
    深入理解数据库视图
    Vue3 封装 element-plus 图标选择器
    程序员:你如何写可重复执行的SQL语句?
    《网络安全笔记》第十章:数据的封装和解封装
    ROS2之spin()函数解析(C++版)
    AI概念之人工智能、机器学习和数据挖掘之间的联系与区别
    武汉新时标文化传媒有限公司模仿创作在短视频内容生产中的价值
    边缘计算多角色智能计量插座:用电监测和资产管理的未来智能化引擎
  • 原文地址:https://blog.csdn.net/m0_73995538/article/details/132793093