Python教程(19)——python异常处理
bigegpt 2024-10-08 00:45 9 浏览
什么是异常
在计算机编程中,异常(Exception)是指在程序执行过程中发生的错误或异常情况。当出现异常时,程序无法正常继续执行,因此需要采取一些特殊的措施来处理异常,以防止程序崩溃或产生意外结果。
异常可以在程序中的任何地方发生,可能是由错误的输入、无效的操作、资源不足、硬件问题或其他未预料的情况引起的。例如,当尝试除以零、访问不存在的文件、连接失败等情况发生时,都会引发异常。
在Python等高级编程语言中,异常处理机制提供了一种结构化的方式来捕获和处理异常。通过在程序中使用try-except语句块,可以捕获并处理异常,让程序能够优雅地处理错误情况。在try块中放置可能引发异常的代码,在except块中编写处理异常的代码。
异常处理的目的是让程序有能力检测和响应异常情况,以及提供适当的错误处理和恢复机制。通过捕获和处理异常,我们可以避免程序崩溃、提供友好的错误提示、执行备用操作或回滚之前的操作,从而提高程序的稳定性和容错性。
说白了,异常是指在程序执行期间发生的错误或异常情况,是一种不可避免的行为,而异常处理是一种机制,用于检测和处理这些异常情况,以保证程序能够继续执行,并提供适当的错误处理和恢复机制。
异常处理方式
Python的异常处理机制允许我们在代码中捕获和处理可能出现的异常情况,以保证程序的稳定性和可靠性。在Python中,异常处理是通过使用try-except语句块来实现的。
try-except语句
- 使用try-except语句来捕获并处理异常。try块中放置可能引发异常的代码,而except块中定义了对异常的处理逻辑。当try块中的代码引发异常时,程序将跳转到匹配的except块进行处理。可以使用不同的except块处理不同类型的异常,也可以使用一个except块处理多个异常类型。
try:
# 可能引发异常的代码
except ExceptionType:
# 处理异常的逻辑
- 可以在try-except语句中添加一个可选的else语句块,用于处理在try块中没有引发异常时需要执行的代码。else块中的代码将在try块中的代码执行完毕,并且没有引发任何异常时执行。
try:
# 可能引发异常的代码
except ExceptionType:
# 处理异常的逻辑
else:
# 没有异常发生时执行的代码
- 可以在try-except语句中添加一个可选的finally语句块,用于定义一定会执行的代码块。不管有没有异常发生,finally语句块中的代码都会执行。finally语句块通常用于资源的释放和清理操作,例如关闭文件、释放网络连接等。
try:
# 可能引发异常的代码
except ExceptionType:
# 处理异常的逻辑
finally:
# 一定会执行的代码
捕获异常类型
- 捕获单个异常类型:try-except语句块只会触发一个类型的异常,这时候可以指定具体的异常类型。
try:
num = int(input("请输入一个整数:"))
result = 10 / num
print("结果:", result)
except ValueError:
print("输入的不是有效的整数")
在这个示例中,int(input("请输入一个整数:"))语句可能引发ValueError异常,如果用户输入的不是有效的整数。如果引发了该异常,程序会跳转到except ValueError块内部的逻辑,打印出错误信息。
- 捕获多个异常类型:try-except语句块会触发多种类型的异常,不管先捕获哪种类型的异常,程序都会跳到except那里。
try:
num1 = int(input("请输入一个整数:"))
num2 = int(input("请输入另一个整数:"))
result = num1 / num2
print("结果:", result)
except (ValueError, ZeroDivisionError):
print("输入的不是有效的整数或除数不能为零")
在这个示例中,我们使用了一个元组(ValueError, ZeroDivisionError)作为异常类型的参数,在except语句中捕获了ValueError和ZeroDivisionError两种异常类型。
- 捕获所有异常:这种方式是最方便快捷的,因为很多时候开发人员也不知道程序要触发的异常的具体名称,直接捕获所有异常,是最快捷的。
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)
相关推荐
- pyproject.toml到底是什么东西?(py trim)
-
最近,在Twitter上有一个Python项目的维护者,他的项目因为构建失败而出现了一些bug(这个特别的项目不提供wheel,只提供sdist)。最终,发现这个bug是由于这个项目使用了一个pypr...
- BDP服务平台SDK for Python3发布(bdp数据平台)
-
下载地址https://github.com/imysm/opends-sdk-python3.git说明最近在开发和bdp平台有关的项目,用到了bdp的python的sdk,但是官方是基于p...
- Python-for-Android (p4a):(python-for-android p4a windows)
-
一、Python-for-Android(p4a)简介Python-for-Android(p4a),一个强大的开发工具,能够将你的Python应用程序打包成可在Android设备上运行...
- Qt for Python—Qt Designer 概览
-
前言本系列第三篇文章(QtforPython学习笔记—应用程序初探)、第四篇文章(QtforPython学习笔记—应用程序再探)中均是使用纯代码方式来开发PySide6GUI应用程序...
- Python:判断质数(jmu-python-判断质数)
-
#Python:判断质数defisPrime(n):foriinrange(2,n):ifn%i==0:return0re...
- 为什么那么多人讨厌Python(为什么python这么难)
-
Python那么棒,为什么那么多人讨厌它呢?我整理了一下,主要有这些原因:用缩进替代大括号许多人抱怨Python完全依赖于缩进来创建代码块,代码多一点就很难看到函数在哪里结束,那么你就需要把一个函数拆...
- 一文了解 Python 中带有 else 的循环语句 for-else/while-else
-
在本文中,我们将向您介绍如何在python中使用带有else的for/while循环语句。可能许多人对循环和else一起使用感到困惑,因为在if-else选择结构中else正常...
- python的numpy向量化语句为什么会比for快?
-
我们先来看看,python之类语言的for循环,和其它语言相比,额外付出了什么。我们知道,python是解释执行的。举例来说,执行x=1234+5678,对编译型语言,是从内存读入两个shor...
- 开眼界!Python遍历文件可以这样做
-
来源:【公众号】Python技术Python对于文件夹或者文件的遍历一般有两种操作方法,一种是至二级利用其封装好的walk方法操作:import osfor root,d...
- 告别简单format()!Python Formatter类让你的代码更专业
-
Python中Formatter类是string模块中的一个重要类,它实现了Python字符串格式化的底层机制,允许开发者创建自定义的格式化行为。通过深入理解Formatter类的工作原理和使用方法,...
- python学习——038如何将for循环改写成列表推导式
-
在Python里,列表推导式是一种能够简洁生成列表的表达式,可用于替换普通的for循环。下面是列表推导式的基本语法和常见应用场景。基本语法result=[]foriteminite...
- 详谈for循环和while循环的区别(for循环语句与while循环语句有什么区别)
-
初九,潜龙勿用在刚开始使用python循环语句时,经常会遇到for循环和while循环的混用,不清楚该如何选择;今天就对这2个循环语句做深入的分析,让大家更好地了解这2个循环语句以方便后续学习的加深。...
- Python编程基础:循环结构for和while
-
Python中的循环结构包括两个,一是遍历循环(for循环),一是条件循环(while循环)。遍历循环遍历循环(for循环)会挨个访问序列或可迭代对象的元素,并执行里面的代码块。foriinra...
- 学习编程第154天 python编程 for循环输出菱形图
-
今天学习的是刘金玉老师零基础Python教程第38期,主要内容是python编程for循环输出菱形※。(一)利用for循环输出菱形形状的*号图形1.思路:将菱形分解为上下两个部分三角形图案,分别利用...
- python 10个堪称完美的for循环实践
-
在Python中,for循环的高效使用能显著提升代码性能和可读性。以下是10个堪称完美的for循环实践,涵盖数据处理、算法优化和Pythonic编程风格:1.遍历列表同时获取索引(enumerate...
- 一周热门
- 最近发表
-
- pyproject.toml到底是什么东西?(py trim)
- BDP服务平台SDK for Python3发布(bdp数据平台)
- Python-for-Android (p4a):(python-for-android p4a windows)
- Qt for Python—Qt Designer 概览
- Python:判断质数(jmu-python-判断质数)
- 为什么那么多人讨厌Python(为什么python这么难)
- 一文了解 Python 中带有 else 的循环语句 for-else/while-else
- python的numpy向量化语句为什么会比for快?
- 开眼界!Python遍历文件可以这样做
- 告别简单format()!Python Formatter类让你的代码更专业
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)