如果可以避免使用Python中的try except子句并且它是正常运行的代码片段的一部分吗?例如,在以下两个代码片段中,首选?
选项1:
try:
id = list.index(42)
except:
print("42 not found")
else:
print("ID: ", id)
选项2:
if 42 in list:
id = list.index(42)
print("ID: ", id)
else:
print("42 not found")
答案 0 :(得分:2)
他们并不气馁。
但是,你的例子很愚蠢,因为你没有需要例外,你可能会在你的list.index
代码中意外地发生拼写错误,这会触发你的异常,你永远不会知道。
如果您知道正在捕捉的异常,请使用例外和捕捉 - 并且在您跳跃之前先了解一下"检查(就像在你的例子中)。通常情况不会如此。但是,在你的例子中它是。
哦,并尝试避免一揽子except:
抓住(特别是如果你知道 你期望你的try
失败)。这可以很容易地实现糟糕的练习,因为你几乎不知道你的电话会做什么/提出什么。如果您的应用程序需要这个(例如Paul在评论中指出的服务器示例),那很好,但是如果您尝试在列表中查找值?那是......不好。
作为一个很好的例子,说明为什么这个例子并不适合你的例子:
try:
id = list.idex(42)
except:
print("42 not found")
else:
print("ID: ", id)
答案 1 :(得分:0)
一切都取决于您的需求:
如果您对效果有很大的依赖性,则不鼓励in FormViewB
in FormViewA
- try
条款。
否则,您可以使用except
- try
子句作为明确的模式。
无论如何,在您的示例中,我认为except
- if
代码比else
- try
代码更清晰。