Python 异常处理:try、except、finally、raise

⚡ 智能摘要

Python 异常处理可以让程序响应运行时错误,而不是崩溃。在这里,你将学习 try、except、finally 和 raise 的工作原理,异常的重要性,以及你会遇到的常见内置错误类型。

  • ⚠️ 它是什么: 异常是指运行时错误。 Python 当出现问题时,它会提高音量。
  • 🛡️ 尝试/异常: try 代码块会执行有风险的代码;except 代码块会捕获并处理异常。
  • 🧹 最后: finally 代码块总是会执行,无论是否发生异常。
  • 🚀 增加: raise 语句允许你故意触发异常。
  • 📋 错误类型: 常见异常包括 ValueError、KeyError、IndexError 和 ZeroDivisionError。
  • 🤖 人工智能帮助: Copilot 等 AI 工具会生成 try-except 代码块并建议错误类型。

Python 异常处理

什么是异常处理 Python?

异常是程序执行时发生的错误。然而,在运行程序时, Python 生成应处理的异常以避免程序崩溃。在 Python 语言,异常会在出现错误时自动触发,或者可以由您的代码触发和拦截。

异常表示,尽管该事件可能发生,但这种类型的事件很少发生。当该方法无法处理异常时,它将被抛出到其调用函数。最终,当主函数外抛出异常时,程序会突然终止。

异常的常见示例

  • 被零除
  • 访问不存在的文件。
  • 添加两个不兼容的类型
  • 尝试访问不存在的序列索引
  • 从断开连接的数据库服务器中删除表。
  • ATM 取款超过可用金额

为什么要使用异常?

以下是在以下情况下使用异常的原因 Python:

  • 异常处理允许您将错误处理代码与正常代码分开。
  • 一个例外是 Python 对象 这表示存在错误。
  • 与代码注释一样,异常可以帮助您提醒自己程序的期望。
  • 它使代码更加清晰,增强了可读性。
  • 允许您在一个地方以一种方式模拟错误处理所产生的后果。
  • 异常是处理错误消息的一种便捷方法。
  • In Python,可以使用 raise exception 方法在程序中引发异常。
  • 引发异常有助于您中断当前代码执行,并将异常返回给预期,直到它被处理为止。
  • 处理无法直接处理异常的组件。

例外规则

以下是一些基本规则 Python 异常处理:

  • 异常必须是类对象
  • 对于类异常,您可以使用带有提及特定类的 except 子句的 try 语句。
  • 即使语句或表达式在语法上正确,在尝试执行时也可能会显示错误。
  • 执行期间发现的错误称为异常,它们并不是无条件致命的。

Python 异常处理机制

异常处理由以下5个关键字管理:

  1. 尝试
  2. 捕捉
  3. 最后

Python Try 语句

try 语句包括关键字 try,后跟冒号 (:) 和一组可能发生异常的代码。它有一个或多个子句。

在执行 try 语句期间,如果没有发生异常,则解释器将忽略该特定 try 语句的异常处理程序。

如果在尝试套件中发生任何异常,则尝试套件将过期,并且程序控制权将转移到尝试套件之后匹配的异常处理程序。

Syntax:
try:
statement(s)

catch 语句

Catch 块每次接受一个参数,即它可能捕获的异常类型。这些参数的范围可以从特定类型的异常(可能变化)到捕获所有类别的异常。

catch 块的规则:

  • 您可以使用关键字 catch 定义一个 catch 块
  • 捕获异常参数始终用括号括起来
  • 它始终代表 catch 块处理的异常类型。
  • 异常处理代码写在两个{}花括号之间。
  • 您可以在单个 try 块内放置多个 catch 块。
  • 仅可以在 try 块之后使用 catch 块。
  • 所有的 catch 块都应该按照从子类到超类异常的顺序排列。

计费示例:

try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}

Finally 语句 Python

无论是否引发异常,Finally 块始终会执行。final 关键字允许您创建一个跟在 try-catch 块后面的代码块。

最后,子句是可选的。它旨在定义应在所有条件下执行的清理操作。

try:
    raise KeyboardInterrupt
finally:
    print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt

Finally 子句在 try 语句之前执行。

在 Python

raise 语句指定初始化异常对象的参数。这里,异常名称后面跟着一个逗号,逗号后面跟着参数或参数的元组。

语法:

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

在这个语法中,参数是可选的,并且在执行时,异常参数值始终为无。
计费示例:
A Python 异常可以是任何值,如字符串、类、数字或对象。大多数此类异常由 Python 核心是具有参数的类,该参数是该类的一个实例。

重要提示 Python 故障

错误类型 描述
算术错误 ArithmeticError 是所有算术异常的基类。它是在算术运算错误时引发的。
导入错误 当您尝试导入一个不存在的模块时,会引发 ImportError 异常。如果您执行了错误的操作,则会发生此类异常。ping 模块名称错误,或者模块不在标准路径中。
索引错误 当您尝试引用超出范围的序列时,会引发 IndexError。
密钥错误 当在字典中找不到特定键时,会引发 KeyError 异常。
名称错误 当代码中引用本地或全局命名空间中不存在的名称时,会引发 NameError。
值错误 当函数或内置操作接收到可能属于正确类型但没有合适值的参数时,会引发值错误。
EOF错误 当其中一个内置函数(input() 或 raw_input())在没有读取任何数据的情况下达到 EOF 条件时,就会引发此类错误。
零除错误 当所有数字类型都发生除以零或以零取模的情况时,就会引发此类错误。
IO错误- 当输入/输出操作失败时会出现这种错误。
语法错误 当出现以下错误时引发 SyntaxErrors Python 语法。
缩进错误 当缩进定义不正确时会出现此错误

其他重要事项 Python 例外

特殊课程 描述
算术异常 算术错误,例如除以零。
数组索引越界异常 数组索引超出范围。
ArrayStoreException 赋值可帮助您获得不兼容类型的数组元素。
类转换异常 演员阵容无效
MlegalMonitorStateException 非法监视操作,例如等待未锁定的线程。
法律状态异常 环境或应用程序处于错误状态。
类未找到异常 未找到类别。
克隆不支持异常 尝试克隆未实现 Cloneable 接口的对象。
非法访问异常 拒绝访问课程。
实例化异常 当您尝试创建接口或绝对对象的对象时,就会发生这种情况。tract 类。
克隆不支持异常 尝试克隆未实现接口的对象。

错误与异常

误差 例外
所有错误 Python 是未经检查的类型。 异常包括已检查类型和未检查类型。
运行时发生编译器未知的错误。 可以借助 try-catch 块来处理异常,从而恢复异常。
错误大多是由应用程序运行的环境引起的。 应用程序本身导致异常。
例子:
内存不足错误
例子:
检查异常、SQL异常、NullPointerException等。

常见问题

异常处理是指对运行时错误做出响应,以防止程序崩溃的过程。 Python 使用 try 和 except 代码块来捕获异常并运行恢复代码。

Code 可能失败的代码放在 try 代码块中。如果发生异常, Python 跳转到匹配的 except 代码块,该代码块处理错误并允许程序继续执行。

finally 代码块无论是否引发异常都会运行,因此非常适合执行诸如关闭文件或释放资源等必须始终执行的清理任务。

raise 语句会故意触发异常。您可以引发内置异常(例如 ValueError)或自定义异常,以表明发生了错误情况。

像语法错误这样的错误通常无法恢复,会导致程序停止运行。异常是运行时事件,可以使用 try 和 except 代码块捕获和处理。

GitHub Copilot 等 AI 助手可以根据您的逻辑的简短描述自动完成 try-except 块,建议要捕获的正确异常类型,并生成 finally 清理代码。

是的。人工智能工具可以自动完成包装。ping try-except 块中存在风险代码,建议使用特定的异常处理而不是简单的 except 语句,并添加日志记录以便更容易调试故障。

常见的内置异常包括 ValueError、TypeError、KeyError、IndexError、ImportError、NameError 和 ZeroDivisionError。每种异常都表示代码中存在特定类型的运行时问题。

总结一下这篇文章: