泛这是一个规划的生活:错误发生。我们不是指您将作为开发程序的一部分捕获和修复的错误。我们在这里谈论在现实世界中的计划出现时会发生意外问题。有人进入将分为零的数据。您的程序需要文件,但它已从硬盘驱动器中删除。那些讨厌的用户!如果不是他们,程序将完全运行。

不担心,帮助是。Python Try语句提供了一种方法来捕获这些问题并允许程序正常进行。在Python编程开始随着初学者的这个课程。如果您已经知道另一种编程语言,请尝试此课程以获得更有经验的程序员

首先,让我们明确我们在这里治愈的东西。在Python中,例外是可以定义的较小问题,并且可能具有解决方案。程序可以处理和恢复异常。错误是更大的尺度问题,这是如此灾难性,即最好中止该程序。Python Try语句旨在处理异常。例外的一些例子是:

被零除

尝试使用字符串变量进行算术

调用一种不存在的方法

打开不存在的文件

在系统标记它只读时打开文件以写入

按下停止执行的键盘组合

例外构成了两个问题。首先是程序无法按预期运行的明显问题。另一个问题是用户必须意识到某些事情是错误的。Python在异常上生成的默认消息是隐秘的,可能不会出现足以让用户的注意力出现。如果用户被告知该文件是只读的,则它们可能能够修复该文件,并且可以将程序成功重新运行。

简单的例子:划分零

Python允许您使用除块语句中的块语句处理异常。可能会生成异常的代码将在此块中放置。这是一个例子:

询问用户A和B值的代码

读取响应并将它们分配给变量A和B的代码

尝试:

c = a / b

除了ZerodivisionError之外:

打印“你试图划分零”

在这种情况下,我们预计某人可能会为B零一个零并导致错误。该陈述被放入块的尝试部分。在这种情况下,除非关键字是为我们预期的特定错误定义,并打印了消息。仅在发生异常时运行。该程序以允许用户知道出错的方式优雅地停止,因此他们可以纠正它。通过将其放入GUI消息框中,您可以更明显地使消息更加明显。您可以参加Python Guis的课程以了解更多信息

可是等等。愚蠢的用户可能已经放入字母或特殊字符而不是A或B的数字。这不会触发我们写的除外子句。我们需要另一个除句子来处理这个问题:

询问用户A和B值的代码

读取响应并将它们分配给变量A和B的代码

尝试:

c = a / b

除了ZerodivisionError之外:

打印“你试图划分零”

除了TypeError:

打印“您输入的一个项目不是数字”

除了:

打印“您输入的值存在未知问题”

请注意,除了声明之外还包括“裸体”。这将被我们未覆盖的任何其他异常触发。

现在假设我们想让用户知道A和B的输入是好的,没有出现例外抛出。我们可以用evers子句来做。只有在没有遇到异常时,才会执行else子句:

询问用户A和B值的代码

读取响应并将它们分配给变量A和B的代码

尝试:

c = a / b

除了ZerodivisionError之外:

打印“你试图划分零”

除了TypeError:

打印“您输入的项目之一不是数字

除了:

打印“您输入的值存在未知问题”

别的:

打印“输入很好”

除了除法中,允许您指定要由相同代码处理多个错误的形式。它将被列出的任何错误触发:

除了(ER1,ER2):

处理这些例外的代码

更美好的例子:把它整合在一起

现在让我们继续更现实的例子。假设我们正在打开文件,也许是数据库,并将数据写入它。有一些可能发生的例外情况。假设在打开文件后发生此类异常。我们的尝试除块可以处理这种情况。有关在Python中的文件工作的更多信息,请参阅本文

尝试:

打开文件的代码

处理数据并写入文件的代码

关闭文件的代码

除了:

处理所有例外的代码

这里有一个问题。如果在文件关闭之前存在异常,则执行程序的执行跳转到除子之后,执行代码,然后继续。文件永远不会关闭。无论发生什么,我们都需要一种保证文件已关闭的方法。这是用终于子句完成的:

尝试:

打开文件的代码

处理数据并写入文件的代码

除了:

处理所有例外的代码

最后:

关闭文件的代码

我们将关闭文件的代码移动到最终子句。本节中的代码运行是否存在异常。

由于Python 2.5版,所有这些条款都可以放入一个块。假设在我们的数据中发生异常,并且不应该写入文件。我们可以包含写数据的else子句。如果没有异常,则else子句只会执行。

尝试:

打开文件的代码

处理数据的代码

除了:

处理所有例外的代码

别的:

代码将数据写入文件

最后:

关闭文件的代码

这应该为您提供如何使用Python Try语句的良好启动。正如您可以想象的那样,可以使用更多的高级方式。现在通过Python中的中间课程转到下一个级别

Python的顶级课程

深度学习:Python中的经常性神经网络
懒惰的程序员公司
4.6 (3,234)
Python 3:深潜席(第4部分 - OOP)
Fred Baptiste.
4.8 (1,171)
完整的Pandas Bootcamp 2021:数据科学与Python
Alexander Hagmann.
4.7 (2,012)
算法交易A-Z配有Python,机器学习和AWS
Alexander Hagmann.
4.6 (499)
畅销书
熊猫和Python的数据分析
Boris Paskhaver.
4.7 (13,280)
畅销书
人工智能:Python的强化学习
懒惰的程序员团队,Lazy Programmer Inc.
4.6 (8,595)
畅销书
高级AI:Python的深度加固学习
懒惰的程序员团队,Lazy Programmer Inc.
4.6 (3,869)
数据科学:Python中的自然语言处理(NLP)
懒惰的程序员公司
4.6 (9,610)
收视率最高

更多Python课程

蟒蛇学生也会学习

赋予你的团队。引领行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求演示