首页 > 编程语言 >Python教程(19)——python异常处理

Python教程(19)——python异常处理

时间:2023-12-31 21:12:02浏览次数:32  
标签:语句 错误 处理 19 Python except try python 异常

什么是异常

在计算机编程中,异常(Exception)是指在程序执行过程中发生的错误或异常情况。当出现异常时,程序无法正常继续执行,因此需要采取一些特殊的措施来处理异常,以防止程序崩溃或产生意外结果。

异常可以在程序中的任何地方发生,可能是由错误的输入、无效的操作、资源不足、硬件问题或其他未预料的情况引起的。例如,当尝试除以零、访问不存在的文件、连接失败等情况发生时,都会引发异常。

在Python等高级编程语言中,异常处理机制提供了一种结构化的方式来捕获和处理异常。通过在程序中使用try-except语句块,可以捕获并处理异常,让程序能够优雅地处理错误情况。在try块中放置可能引发异常的代码,在except块中编写处理异常的代码。

异常处理的目的是让程序有能力检测和响应异常情况,以及提供适当的错误处理和恢复机制。通过捕获和处理异常,我们可以避免程序崩溃、提供友好的错误提示、执行备用操作或回滚之前的操作,从而提高程序的稳定性和容错性。

说白了,异常是指在程序执行期间发生的错误或异常情况,是一种不可避免的行为,而异常处理是一种机制,用于检测和处理这些异常情况,以保证程序能够继续执行,并提供适当的错误处理和恢复机制。

异常处理方式

Python的异常处理机制允许我们在代码中捕获和处理可能出现的异常情况,以保证程序的稳定性和可靠性。在Python中,异常处理是通过使用try-except语句块来实现的。

try-except语句

  1. 使用try-except语句来捕获并处理异常。try块中放置可能引发异常的代码,而except块中定义了对异常的处理逻辑。当try块中的代码引发异常时,程序将跳转到匹配的except块进行处理。可以使用不同的except块处理不同类型的异常,也可以使用一个except块处理多个异常类型。
 try:
     # 可能引发异常的代码
 except ExceptionType:
     # 处理异常的逻辑
  1. 可以在try-except语句中添加一个可选的else语句块,用于处理在try块中没有引发异常时需要执行的代码。else块中的代码将在try块中的代码执行完毕,并且没有引发任何异常时执行。
try:
   # 可能引发异常的代码
except ExceptionType:
   # 处理异常的逻辑
else:
   # 没有异常发生时执行的代码
  1. 可以在try-except语句中添加一个可选的finally语句块,用于定义一定会执行的代码块。不管有没有异常发生,finally语句块中的代码都会执行。finally语句块通常用于资源的释放和清理操作,例如关闭文件、释放网络连接等。
try:
   # 可能引发异常的代码
except ExceptionType:
   # 处理异常的逻辑
finally:
   # 一定会执行的代码

捕获异常类型

  1. 捕获单个异常类型:try-except语句块只会触发一个类型的异常,这时候可以指定具体的异常类型。
try:
   num = int(input("请输入一个整数:"))
   result = 10 / num
   print("结果:", result)
except ValueError:
   print("输入的不是有效的整数")

在这个示例中,int(input("请输入一个整数:"))语句可能引发ValueError异常,如果用户输入的不是有效的整数。如果引发了该异常,程序会跳转到except ValueError块内部的逻辑,打印出错误信息。

  1. 捕获多个异常类型:try-except语句块会触发多种类型的异常,不管先捕获哪种类型的异常,程序都会跳到except那里。
try:
    num1 = int(input("请输入一个整数:"))
    num2 = int(input("请输入另一个整数:"))
    result = num1 / num2
    print("结果:", result)
except (ValueError, ZeroDivisionError):
    print("输入的不是有效的整数或除数不能为零")

在这个示例中,我们使用了一个元组(ValueError, ZeroDivisionError)作为异常类型的参数,在except语句中捕获了ValueErrorZeroDivisionError两种异常类型。

  1. 捕获所有异常:这种方式是最方便快捷的,因为很多时候开发人员也不知道程序要触发的异常的具体名称,直接捕获所有异常,是最快捷的。
try:
   file = open("data.txt", "r")
   content = file.read()
   file.close()
except Exception as e:
   print("发生异常:", str(e))

在这个示例中,尝试打开文件data.txt进行读取操作。如果在打开或读取文件的过程中发生了任何异常,程序会跳转到except Exception as e块内部的逻辑,打印出异常信息。

相关的异常类型

在Python当中,异常类型是很多。以下是一点整理的一些关于异常的类型。如果有错误的,欢迎大家指出。

异常类型 说明
Exception 所有异常的基类
SyntaxError 语法错误,通常是由于代码书写不符合语法规则造成的
IndentationError 缩进错误,通常是由于缩进不正确造成的
NameError 名称错误,通常是在代码中使用了一个未定义的变量或函数名
TypeError 类型错误,通常是在进行不兼容类型的操作时引发的
ValueError 值错误,通常是在逻辑上不合理或无效的值被传递时引发的
IndexError 索引错误,通常是在尝试访问列表、元组、字符串等类型时索引超出范围
KeyError 键错误,通常是在尝试访问字典中不存在的键时引发的
AttributeError 属性错误,通常是在尝试访问对象不存在的属性时引发的
FileNotFoundError 文件未找到错误,通常是在尝试打开或读取不存在的文件时引发的
IOError 输入输出错误,通常是在进行文件操作时发生的错误
ZeroDivisionError 除零错误,通常是在尝试进行除以零的运算时引发的
AssertionError 断言错误,通常是在调用assert语句时条件为False时引发的
ImportError 导入错误,通常是在导入模块或包时出现问题时引发的
OverflowError 溢出错误,通常是由于数值超过其类型的范围导致的
KeyboardInterrupt 键盘中断错误,通常是用户在运行程序时按下了Ctrl+C

更多精彩内容,请关注同名公众:一点sir(alittle-sir)

标签:语句,错误,处理,19,Python,except,try,python,异常
From: https://www.cnblogs.com/kiwiblog/p/17937978

相关文章

  • 【Python爬虫课程设计】大数据分析——东方财富石头科技股市数据分析
    一、选题课程背景在当今信息化时代,数据已成为驱动各行各业发展的重要力量。股市作为经济的晴雨表,其数据更是备受关注。东方财富网作为国内知名的财经网站,拥有海量的股市数据。随着大数据技术的不断发展,数据在各行各业的应用越来越广泛。股市作为经济的核心,其数据的价值不言而喻。......
  • Python趣味入门13:类中的各种变量
    小牛叔带你飞越类的门槛其中我们已知道定义变量在类中就表示为属性。但是在不同的位置定义变量会有不同的作用,并且采用不同的命名方式,也会让变量具有不同的作用本文假设有一个类指南针(compass),可想象成某个地图游戏中帮助主角寻找方向,也是本节主要的示例。1.类属性与实例属性c......
  • 一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)
    之前我们介绍了如何使用嵌入式Python3环境给项目制作一键整合包,在使用嵌入式Python环境时,通常是作为另一个应用程序的一部分,而Python3虚拟环境是为了在开发过程中隔离项目所需的Python环境。虚拟环境允许我们在同一台计算机上的不同项目中使用不同的Python版本和软件包,而......
  • ciscn_2019_es_2
    ciscn_2019_es_2栈迁移read()存在溢出,但是只有0x30个位置不能拿到shell,所以考虑栈迁移通过泄露参数s在栈上的位置,将payload写入栈上迁移栈到参数s的位置,运行写入的payload拿到shellleaved=>movesp,ebppopebp#清除栈帧,初始化到执行前的样子ret=>popeipj......
  • Reinforcement Learning in Python:实践指南
    1.背景介绍人工智能(ArtificialIntelligence,AI)是一门研究如何让计算机自主地学习、理解、推理和决策的科学。人工智能的一个重要分支是强化学习(ReinforcementLearning,RL),它研究如何让计算机通过与环境的互动来学习如何做出最佳决策。强化学习的目标是让计算机能够在不同的状态......
  • Python 深度学习:TensorFlow 和 PyTorch 实践
    1.背景介绍深度学习是人工智能领域的一个重要分支,它通过模拟人类大脑中的神经网络学习和决策,使计算机能够从大量数据中自动发现模式和关系。深度学习已经应用于图像识别、自然语言处理、语音识别、机器翻译等多个领域,取得了显著的成果。TensorFlow和PyTorch是目前最流行的深度学......
  • Python Machine Learning Projects: Building RealWorld Applications
    1.背景介绍人工智能和机器学习技术在过去的几年里取得了巨大的进步,这使得许多实际应用成为可能。这本书《16.PythonMachineLearningProjects:BuildingReal-WorldApplications》旨在帮助读者理解这些实际应用,并提供有关如何使用Python编写机器学习代码的实践指南。本书的目......
  • CF1916C Training Before the Olympiad
    思路首先,我们可以考虑两个人会怎么操作,如果是选择了两个偶数和两个奇数,那么答案不会减小,如果选择了一个奇数一个偶数,那么答案会减小一。所以想使答案大的人应该尽量选择前一种方案,想使答案小的人应该尽量选择后一种方案。但这还不是最优的,想使答案大的人在可以选择两个奇数时,绝......
  • CF1916D Mathematical Problem
    思路很不错的人类智慧题。拿到以后,完全没有思路,看到数据范围,感觉是什么\(n^2\logn\)的逆天做法,但是又完全没思路,看后面的题感觉没希望,就在这道题死磕。先打了个暴力程序,发现平方数太多,没什么规律,就拿了个map统计一下那些出现数字方案拥有的平方数比较多程序如下:#include......
  • CF1916B Two Divisors
    思路看到题目要求求一个数\(x\),满足它的最大的两个因数分别是\(a\)和\(b\),并且规定一个数本身不是他的因数。首先\(x\)需要是\(a\)和\(b\)的倍数,所以想到最小公倍数,如果不考虑最小公倍数等于\(b\),最小公倍数就一定是答案,因为最小公倍数是最小的满足是\(a\)和\(b\)......