千家信息网

Python异常处理的基本知识有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍Python异常处理的基本知识有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、Python 异常处理:错误与异常1、什么是错误?错误是程序中出现的错误,
千家信息网最后更新 2026年11月02日Python异常处理的基本知识有哪些

这篇文章主要介绍Python异常处理的基本知识有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、Python 异常处理:错误与异常

1、什么是错误?

错误是程序中出现的错误,例如语法错误。

它发生在编译时。让我们看一个例子。

if a<5File "", line 1    if a < 5           ^SyntaxError: invalid syntax

2、什么是异常?

错误也会在运行时发生,我们将它们称为异常。异常是在程序执行期间发生并中断程序指令正常流程的事件。

通常,当 Python 脚本遇到它无法处理的错误情况时,它会引发异常。

当 Python 脚本引发异常时,它会创建一个异常对象。

通常,脚本会立即处理异常。如果它不这样做,那么程序将终止并打印对错误的追溯及其下落。

>>> 1 / 0Traceback (most recent call last): File "", line 301, in run code File "", line 1, in ZeroDivisionError: division by zero

二、如何使用 Try-Except 处理异常?

1、什么是 Try-Except 语句?

我们使用 try-except 语句在 Python 程序中启用异常处理。

在 try 块中,您编写可以引发异常的代码。

而处理或捕获异常的代码,我们放在except子句中。

2、Python 异常处理语法

以下是Python try-except-else 块的语法。

try: 你在这里做你的操作; ......................except ExceptionI: 如果有 ExceptionI,则执行此块except ExceptionII: 如果有 ExceptionII,则执行此块 ......................else: 如果没有异常则执行此块。

看一看 - 30 个 Python 教程和技巧

这是有效使用 Python try 语句的清单。

  • 根据需求,单个 try 语句可以有多个 except 语句。在这种情况下,try 块包含可以抛出不同类型异常的语句。

  • 我们还可以添加一个通用的 except 子句,它可以处理所有可能的异常类型。

  • 我们甚至可以在except子句之后包含一个else子句。如果 try 块中的代码没有引发异常,则 else 块中的指令将执行。

3、Python 异常处理示例

让我们通过一个示例代码来了解 Python try-except 的使用。

try:   fob = open("test", "w")   fob.write("这是我的异常处理测试文件")except IOError:   print    "错误:找不到文件或读取数据"else:   print    "对文件执行写操作成功"   fob.close()

上面的代码产生以下输出。

>>对文件执行写操作成功

让我们再举一个例子,在这个例子中我们试图以 READ 模式打开一个文件。

我们将对其执行 WRITE 操作。执行时会抛出异常。

try:   fob = open("test", "r")   fob.write("这是我的测试文件,用于验证 Python 中的异常处理")except IOError:   print    "错误:找不到文件或读取数据"else:   print    "对文件执行写操作成功"

上面的代码产生以下输出。

>>错误:找不到文件或读取数据

三、用 Except 处理所有类型的异常

如果我们使用一个空的 "except" 子句,那么它将捕获所有类型的异常。

然而,这既不是一个好的编程习惯,也没有人推荐它。

这是因为这样的 Python try-except 块可以处理所有类型的异常。但是它不会帮助程序员找到导致问题的异常。

您可以通过以下代码查看如何捕获所有异常。

1、例子

try:   你在这里做你的操作;   ......................except:   如果有任何异常,则执行此块   ......................else:   如果没有异常则执行此块

四、用 except 处理多个异常

我们可以使用相同的 except 子句定义多个异常。这意味着如果 Python 解释器找到匹配的异常,那么它将执行在 except 子句下编写的代码。

简而言之,当我们这样定义except子句时,我们期望同一段代码抛出不同的异常。此外,我们希望在每种情况下都采取相同的行动。

请参考下面的例子。

1、例子

try:   你在这里做你的操作;   ......................except(Exception1[, Exception2[,...ExceptionN]]]):   如果给定的异常列表中有任何异常,   然后执行这个块   ......................else:   如果没有异常则执行此块

五、如何使用 Try-Finally 处理异常?

1、什么是 Try-Finally 语句?

我们还可以借助 try-finally 语句启用 Python 异常处理。

使用 try 块,我们还可以选择定义" finally "块。该子句允许定义我们想要执行的语句,无论 try 块是否引发异常。

此功能通常在释放外部资源时出现。

这是帮助的编码片段。

try:   你在这里做你的操作;   ......................   由于任何异常,这可能会被跳过finally:   这将始终被执行   ......................

2、例子

一个关键点是我们可以为每个 try 块定义一个" except "或" finally "子句。你不能把这些放在一起。此外,您不应将" else "子句与" finally "子句一起使用。

让我们举一个例子来更清楚。

try:    fob = open('test', 'w')    fob.write("这是我在异常处理中验证 try-finally 的测试文件")    print 'try 块执行'finally:    fob.close()    print 'finally 块执行'

如果未发生异常,则您将看到以下输出。

>>try 块执行
>>finally 块执行

假设我们以READ模式打开文件,然后尝试对其执行写操作。在这种情况下,下面的代码将有助于处理异常。

try:    fob = open('test', 'r')    try:        fob.write("这是我在异常处理中验证 try-finally 的测试文件")        print 'try 块执行'    finally:        fob.close()        print 'finally 块执行以关闭文件'except IOError:    print "错误:找不到文件或读取数据"

在这种情况下,解释器将引发异常,并显示以下输出。

>>finally 块执行以关闭文件
>>错误:找不到文件或读取数据

当某些代码在 try 块中引起异常时,执行会立即传递到" finally "块。" finally "块中的语句全部执行完毕后,异常恢复到" except "块执行。但是必须存在" try-except "语句的下一个更高层。

六、用参数引发异常

1、什么是提升?

我们可以使用 raise 关键字强制引发异常。

我们还可以选择将值传递给异常并指定它发生的原因。

2、提升语法

这是调用" raise "方法的语法。

raise [Exception [, args [, traceback]]]

在哪里,

  • 在 "Exception"下- 指定其名称。

  • " args "是可选的,表示异常参数的值。

  • 最后一个参数 "traceback" 也是可选的,如果存在,则是用于异常的回溯对象。

让我们举一个例子来证明这一点。

3、加注示例

>>> raise MemoryErrorTraceback (most recent call last):...MemoryError >>> raise MemoryError("This is an argument")Traceback (most recent call last):...MemoryError: This is an argument  >>> try:      a = int(input("Enter a positive integer value: "))     if a <= 0:            raise ValueError("This is not a positive number!!")    except ValueError as ve:      print(ve)  Following Output is displayed if we enter a negative number:  Enter a positive integer: -5 This is not a positive number!!

七、在 Python 中创建自定义异常

1、什么是自定义异常?

自定义异常是程序员自己创建的异常。

他通过添加一个新类来做到这一点。这里的技巧是从基本异常类派生自定义异常类。

大多数内置异常也有相应的类。

2、在 Python 中创建异常类

>>> class UserDefinedError(Exception):...     pass >>> raise UserDefinedErrorTraceback (most recent call last):...__main__.UserDefinedError >>> raise UserDefinedError("An error occurred")Traceback (most recent call last):...__main__.UserDefinedError: An error occurred

在上面的代码片段中,您可以看到我们创建了一个用户定义的异常类," UserDefinedError " 。它使用基 Exception 类作为父类。因此,新的用户定义异常类将像任何其他异常类一样引发异常,即通过调用带有可选错误消息的" raise "语句。

让我们举个例子。

3、例子

在此示例中,我们将展示如何在程序中引发用户定义的异常并捕获错误。

该程序提示用户一次又一次地输入字母表,直到他只输入存储的字母表为止。

为了寻求帮助,该程序会向用户提供提示,以便他可以找出正确的字母表。此外,他可以检查他的猜测是否高于或低于存储的字母表。

#定义 Python 用户定义的异常class Error(Exception):   """Base class for other exceptions"""   pass class InputTooSmallError(Error):   """Raised when the entered alpahbet is smaller than the actual one"""   pass class InputTooLargeError(Error):   """Raised when the entered alpahbet is larger than the actual one"""   pass #我们的主程序#用户猜测一个字母,直到他/她猜对了 #你需要猜这个字母alphabet = 'm' while True:   try:       apb =  input("输入一个字母: ")       if apb < alphabet:           raise InputTooSmallError       elif apb > alphabet:           raise InputTooLargeError       break   except InputTooSmallError:       print("输入的字母太小,再试一遍!")       print('')   except InputTooLargeError:       print("输入的字母太大,再试一遍!")       print('') print("恭喜! 你猜对了")

让我们通过提供不同的输入来测试这个程序。

输入一个字母:c输入的字母太小,再试一遍!输入一个字母:s输入的字母太大,再试一遍!输入一个字母:q输入的字母太大,再试一遍!输入一个字母:k输入的字母太小,再试一遍!输入一个字母:m恭喜! 你猜对了

因此你可以看到我们在这个程序中定义了一个名为 Error 的基类。它引发了从基类派生的两个异常(" InputTooSmallError "和" InputTooLargeError ")。这是在 Python 编程中定义用户定义异常的标准方法。

4、Python 内置异常

以上是"Python异常处理的基本知识有哪些"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

处理 字母 文件 输入 错误 代码 子句 程序 语句 例子 用户 这是 情况 数据 类型 语法 面的 测试 字母表 示例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融 科技 上海互联网科技有限公司 喔噻互联网科技 猪兼强互联网科技 远信互联网科技 人人互联网科技是培训 多迪互联网科技有限公司 科技大学互联网专业好不好 宁夏科技产业互联网案例 阿大互联网科技有限公司 工业互联网等科技实现智能化赋能 徐州市互联网科技有限公司 小米互联网科技园入驻 互联网科技股为什么大涨 郑州欣桑互联网科技有限公司 吉林省码上互联网科技电话 广西科技产业互联网是什么 悟空问答互联网科技 重庆科技产业互联网有哪些 株洲百竞科技的互联网营销顾问 互联网科技有限公司 互联网是不是新科技 广州互联网科技公司 杭州壁岐互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 天津腾达互联网科技有限公司 阿里互联网科技企业 科技赋能视角下互联网保险发展 云鲸互联网络科技有限公司 科技互联网行业投资研究
0