Python中的出色错误处理
我们在Python中进行编码,因为该语言具有令人难以置信的易用性。 Python中的错误处理也不例外。尝试/除外,Python的方法是处理潜在的危险输入而不会崩溃您的程序,并返回以使程序继续进行的用户重要信息。在这篇文章中,我们将讨论三个特定实例,即何时尝试/除外非常适合错误处理:
-
坐垫可能会出现错误的代码,例如按0划分或文件访问不存在的文件或不支持的文件类型。
-
处理使用外部系统(例如API端点)时可能发生的网络或服务器问题,从而为用户可行的信息提供了可行的信息。
-
包装用户输入以处理意外的数据类型,该数据类型允许程序继续运行。
这篇文章将主要关注第三点,演示如何处理/除了意外或不兼容的用户输入以外。
一个谨慎的词:虽然尝试/除块除外可以有效地处理有问题的输入并防止崩溃,但应明智地使用它们,因为它们可能会掩盖开发人员可以解决的问题以提高性能。
请从6:04开始视频,以听取密歇根大学信息临床教授Charles Severance博士,解释Python的尝试/除外。该视频是freeCodeCamp批准的较大集合的一部分,以帮助Devs了解有关Python的更多信息。
缓冲您的程序与TypeError的危险
,而不是在输入代码上编写验证(我们可能没有能力为浏览器或前端输入执行),我们可以预料到何时可能出现数据类型。
在您的编程中,您已经确定了潜在的危险代码线。假设您的程序看起来像这样:
x= userInput
calculate = x+5
print(calculate)
#userInput = 5
这是一个非常简单的程序,可以计算向用户输入添加5的值。如果如评论所建议的,如果UserInput = 5,则自然输出为10。
现在想象一下您正在与负责编写用户面向功能的前端团队合作的情况。由于某种原因,前端的验证不能按预期/没有写入。因此,用户能够输入输入:
#userInput = 'five'
x = 'five'
calculate = x + 5
#TypeError -- Your Python Program Crashes
作为Python程序员,这是我们的失败 - 我们没有在错误处理代码中写入以保持程序运行/向我们的用户提供宝贵的反馈,以便让Python继续其计算。这是我们可以使用try/除外的地方。
x = userInput
try:
calculate = int(x) + 5
return(calculate)
except:
return("The input was not a valid number. Please try again.")
这向我们的用户返回了一些有价值的信息。他们现在知道,要使程序工作,他们需要输入一个数字。
这里发生了什么?
python默认情况下是同步的,这意味着它仅按行计算代码 - 它不“知道”接下来发生的事情。当我们在尝试中写下函数时:语句时,它将存储在内存中的某些内容:“我被告知要执行以下代码块的计算。返回错误;相反,我要继续标记为“除外:”的块。
通过这种方式,如果我们可以预期潜在的危险输入(如我们当前使用用户输入的情况),那么即使输入不好,我们也可以有效地允许Python继续运行该程序。
如果您熟悉If:else:语句,那么您就不足为奇了,python甚至不会在尝试中击中返回声明:失败时阻止;取而代之的是,它移动到以下例外:块并计算在此处嵌套的所有代码。
现在已将用户通知了Python在计算数据中的问题,该程序尚未崩溃,并且我们通过堆栈中有效的通信作为开发人员取得了成功。
总结:通过例外处理来授权您的程序
正如我们所看到的,Python的尝试/除机制外,是程序员工具箱中的重要工具。它可以提高代码的鲁棒性和可靠性,缓冲潜在的陷阱,并在面对不可预测的输入或意外事件时防止您的程序崩溃。
虽然这篇文章专门研究了用户输入引起的typeError异常,但请记住,try/frust construct的用途广泛得多。您可以并且应该明智地使用它来处理各种特殊情况。
话虽如此,除了掩盖了应直接固定的板块掩盖代码或错误的块外,必须不要陷入使用try/除外的陷阱。过度使用它们可能会导致难以调试和维护的代码。始终努力编写干净,高效的代码,并且仅在逻辑和有益的情况下使用异常处理。
当Charles Deverance博士正确地强调,Python的错误处理,尤其是尝试/除外,您的代码更具弹性和用户友好。在事物的宏伟方案中,使用尝试/适当的方法意味着您正在编写尊重用户时间和经验的代码。这是良好的编码道德和负责任开发人员的标记的演示。
继续您的研究
好奇您可以使用尝试/除外吗?打开Replit environment并练习编码一些简单的程序,以进一步了解您对尝试/除外的尝试。
这是一个代码示例,可以尝试使用失败的API端点:
import requests
try:
response = requests.get('https://nonexistent-api.com')
data = response.json()
except:
print("Error: Unable to connect to the API endpoint.")
这是尝试访问不存在的文件的另一个快速示例:
try:
with open('non_existent_file.txt', 'r') as f:
content = f.read()
except FileNotFoundError:
print("Error: The file does not exist.")
如果您确定Python可能会丢下的错误,则可以指定确切的错误类型:
try:
# some code here
except TypeError:
# handle TypeError
except ValueError:
# handle ValueError
# and so on...
打开替补环境并尝试修改代码,以查看程序在不同情况下的行为如何变化。
让我们保持对话的移动!
您对Python错误处理或一般维护干净的Python代码还有其他想法吗?您面临的任何挑战或您发现的创新解决方案?
这是一个问题,关注还是只是一个有趣的观察,我全都是耳朵。因此,请不要犹豫。毕竟,最好的学习方法是在一起。让我们通过分享和讨论我们的经验来增强我们的编码旅程。
期待您的回音!