Python中的异常处理:使用try except处理异常

已发表: 2021-06-29

遇到错误时,Python 程序会终止。 错误通常是程序停止执行时出现的问题。 这些错误可能是由于语法错误或异常所致。 每当解析器检测到不正确的语句时,就会发生语法错误。

但是,当具有正确语法的代码产生错误时,它被称为异常。 python 中提供了各种内置异常。 这些是随着程序正常流程发生变化的内部事件的发生而引发的。

因此,异常可以定义为导致代码中断并因此中止程序流程的某些不寻常的程序条件。

程序的执行一旦遇到异常就会停止。 这进一步停止了代码的执行。 因此,异常是运行时导致的错误,无法由 python 脚本处理。

对于 python 中的异常处理,脚本语言 python 提供了一个解决方案,使代码的执行继续进行并且没有任何中断。 缺少异常处理会停止执行在引发异常的代码之后存在的代码。

python 中提供了几个内置选项,它们允许程序的执行没有任何中断,包括常见的异常。 除此之外,还提供了python 自定义异常 对于任何 python 程序,可以抛出的常见异常是:

  • ZeroDivisionError:当使用零除数时会导致这种类型的异常。
  • NameError:每当程序找不到全局或本地名称时,就会发生这种类型的异常。
  • IndentationError:不正确的缩进会导致 indentationError。
  • IOError :输入输出操作失败导致 IOError。
  • EOFError:它发生在程序的连续运行中,即使当

文件结束。

目录

引发异常

为了在某​​些条件下抛出异常,使用 raise。
程序的执行被暂停,相关的异常显示在屏幕上。 异常的显示让用户知道潜在的问题可能是什么。

在python中通过使用raise子句,我们可以引发异常。 在需要通过引发异常来停止程序的情况下,该应用程序很有用。

例如:假设一个程序需要大约 1GB 的内存来执行它,它试图占用 1GB,在这种情况下,停止执行程序可能会引发异常。

引发异常的语法:

异常类,<值>

所以,

  • “raise”用于在程序中引发异常。
  • 可以将值提供给可以提供给括号的异常。
  • 可以使用关键字“as”访问该值。 赋予异常的值可以存储在用“e”表示的引用变量中。
  • 为了指定异常类型,可以将值传递给异常。

断言错误

可以在 python 中进行断言,而不是让程序崩溃。 断言程序满足特定条件。 如果条件为真,程序将继续运行。 否则,当条件为假时,程序会抛出 AssertionError 异常。

通过try 和 except 块处理异常

python中抛出的异常被python中的try和except块捕获并处理。 try 块中的代码作为程序的一部分正常执行。 另一个块包括响应 try 块中程序抛出的异常而执行的语句。

每当在语法正确的代码中遇到错误时,程序就会抛出异常。 如果抛出的异常处理不当,程序就会崩溃。 在这种情况下,except 块确定程序对该异常的响应。

try 和 except 子句的应用最好通过以下示例来理解,该示例取自上述来源。

在这种情况下,只要发生异常,程序将继续运行,并通知用户程序不成功,而不是给出空白输出。

结帐:Python 项目的想法和主题

该程序显示了通过函数调用引发的错误类型。 但是,可以捕获该函数引发的错误以了解实际出了什么问题。

在 windows 机器上运行代码将生成以下内容

首先显示的消息表示一个 AssertionError,通过该错误通知用户该函数只能在 Linux 操作系统的系统上执行。 第二条消息进一步给出了哪个函数无法执行的信息。
如果 file.log 将生成带有消息“无法打开 file.log”的输出,则不存在。

该程序仍将继续运行,因为它是将信息传递给用户的消息。 Python 文档中提供了许多内置异常。 如下所示的一种例外情况。

在这种情况下不存在 file.log 将生成以下输出。

通过在 try 子句中使用更多的函数调用可以捕获各种异常。 但是,在检测到异常时,try 子句语句将停止。

else 子句

使用语句的 else 子句可以帮助指示程序仅在没有异常时才执行语句块。

else 子句被执行只是因为没有例外。 如果代码包含异常,则会产生以下结果。

Python 自定义异常

Python 有许多内置异常,只要程序出现问题,就会抛出错误。 但是,用户需要创建一些自定义的例外,以达到他的目的。

可以创建一个新类来定义自定义异常。 无论是直接还是间接,这些类都必须从内置异常类派生。

创建用户定义的类 CustomError,它继承自 Exception 类。 与其他异常类似,这些异常也是通过使用“raise”和可选的错误消息引发的。

每当开发大型 python 程序时,应将用户定义的异常放在单独的文件中。 这样做通常是一种很好的做法,大多数标准模块都遵循这种做法,其中异常分别定义为errors.py或exceptions.py。

python 自定义异常简单,因为普通类实现了它们也遵循相同的所有内容。

语法和示例

让我们考虑两个变量a和b。 变量的输入取自用户并执行数字的除法。 现在,如果用户输入的分母为零。

为了处理这些异常,可以将 try-except 块添加到程序中。 对于导致怀疑抛出异常的任何类型的代码。 它应该放在语句的 try 块中。

try 块的语法

尝试:

#代码

除了例外1:

#代码

除了例外2:

#代码

#代码

它显示了 try-except 语句的使用,其中代码放置在 try 块中,并在代码中没有异常时执行。

带有 try-except 的 else 语句的语法

尝试

#try 语句

除了例外1

#代码

别的

#没有异常时执行代码

几个重要的点:

  • 异常不能通过python中的异常语句来指定。
  • 可以通过使用 try 块在代码中声明多个异常,因为 try 块内可以有许多语句可以引发不同类型的异常。
  • 可以使用 try 块指定 else 块,该块在 try 块没有抛出异常时执行。
  • else 块应该包含不负责抛出异常的语句。

另请阅读:Python 深受开发人员欢迎的主要原因

结论

在本文中,我们通过一些示例简要讨论了python中异常处理的概念。 除了内置异常之外,还简要定义python 自定义异常。 现在,您可以了解异常的重要性以及python 中异常的处理

如果你有兴趣了解更多关于python语言及其在数据科学中的实现,可以查看upGrad的以下课程“数据科学中的Executive PG Program”。

在线课程专为 21 至 45 岁年龄段的所有入门级专业人士设计。 该课程拥有超过 20 场现场会议和 14 多种工具和编程语言的实用知识,将引导您走向完美。 任何查询都可以发送消息。 我们的团队将为您提供帮助。

Python中有多少种错误类型?

Python 中主要有两种可区分的错误类别——语法错误和异常。 语法错误:当任何代码行有错误的语法时,就会导致语法错误。 这是最常见的错误,在程序解析期间会检测到。 这些错误包括缺少运算符、不正确的缩进、关键字拼写错误、缺少冒号、左括号以及语法中的其他微小错误。 异常:异常是在程序执行过程中检测到的错误。 程序在语法测试成功后,会检查逻辑错误。 Python 有丰富的内置异常集合。 您还可以创建自定义用户定义的异常。

语法错误和异常之间的主要区别是什么?

当代码或代码行语法错误时,就会发生语法错误。 当代码中出现语法错误时,程序终止。 缺少冒号甚至拼写错误的关键字也可能导致语法错误。
但是,例外情况完全不同。 异常可以被认为是扰乱程序流程的异常。 即使程序在语法上是正确的,也可能发生异常。 与错误不同,代码执行到发生异常的行。

raise 关键字在 Python 中的作用是什么?

raise 关键字用于在 Python 中引发异常。 错误的类型也可以一起提出,您还可以添加要在引发异常时显示的文本。 当您需要检查代码的输入时,它会非常方便。