百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

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

off999 2024-11-19 08:34 20 浏览 0 评论

什么是异常

在计算机编程中,异常(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)

相关推荐

面试官:来,讲一下枚举类型在开发时中实际应用场景!

一.基本介绍枚举是JDK1.5新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错...

一日一技:11个基本Python技巧和窍门

1.两个数字的交换.x,y=10,20print(x,y)x,y=y,xprint(x,y)输出:102020102.Python字符串取反a="Ge...

Python Enum 技巧,让代码更简洁、更安全、更易维护

如果你是一名Python开发人员,你很可能使用过enum.Enum来创建可读性和可维护性代码。今天发现一个强大的技巧,可以让Enum的境界更进一层,这个技巧不仅能提高可读性,还能以最小的代价增...

Python元组编程指导教程(python元组的概念)

1.元组基础概念1.1什么是元组元组(Tuple)是Python中一种不可变的序列类型,用于存储多个有序的元素。元组与列表(list)类似,但元组一旦创建就不能修改(不可变),这使得元组在某些场景...

你可能不知道的实用 Python 功能(python有哪些用)

1.超越文件处理的内容管理器大多数开发人员都熟悉使用with语句进行文件操作:withopen('file.txt','r')asfile:co...

Python 2至3.13新特性总结(python 3.10新特性)

以下是Python2到Python3.13的主要新特性总结,按版本分类整理:Python2到Python3的重大变化Python3是一个不向后兼容的版本,主要改进包括:pri...

Python中for循环访问索引值的方法

技术背景在Python编程中,我们经常需要在循环中访问元素的索引值。例如,在处理列表、元组等可迭代对象时,除了要获取元素本身,还需要知道元素的位置。Python提供了多种方式来实现这一需求,下面将详细...

Python enumerate核心应用解析:索引遍历的高效实践方案

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。根据GitHub代码分析统计,使用enumerate替代range(len())写法可减少38%的索引错误概率。本文通过12个生产...

Python入门到脱坑经典案例—列表去重

列表去重是Python编程中常见的操作,下面我将介绍多种实现列表去重的方法,从基础到进阶,帮助初学者全面掌握这一技能。方法一:使用集合(set)去重(最简单)pythondefremove_dupl...

Python枚举类工程实践:常量管理的标准化解决方案

本文通过7个生产案例,系统解析枚举类在工程实践中的应用,覆盖状态管理、配置选项、错误代码等场景,适用于Web服务开发、自动化测试及系统集成领域。一、基础概念与语法演进1.1传统常量与枚举类对比#传...

让Python枚举更强大!教你玩转Enum扩展

为什么你需要关注Enum?在日常开发中,你是否经常遇到这样的代码?ifstatus==1:print("开始处理")elifstatus==2:pri...

Python枚举(Enum)技巧,你值得了解

枚举(Enum)提供了更清晰、结构化的方式来定义常量。通过为枚举添加行为、自动分配值和存储额外数据,可以提升代码的可读性、可维护性,并与数据库结合使用时,使用字符串代替数字能简化调试和查询。Pytho...

78行Python代码帮你复现微信撤回消息!

来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。[导读]Python曾经对我说:"时日不多,赶紧用Python"。于是看...

登录人人都是产品经理即可获得以下权益

文章介绍如何利用Cursor自动开发Playwright网页自动化脚本,实现从选题、写文、生图的全流程自动化,并将其打包成API供工作流调用,提高工作效率。虽然我前面文章介绍了很多AI工作流,但它们...

Python常用小知识-第二弹(python常用方法总结)

一、Python中使用JsonPath提取字典中的值JsonPath是解析Json字符串用的,如果有一个多层嵌套的复杂字典,想要根据key和下标来批量提取value,这是比较困难的,使用jsonpat...

取消回复欢迎 发表评论: