【发布时间】:2012-11-06 04:25:57
【问题描述】:
所以我想知道编写 try except 语句的正确方法。我是 Python 中错误处理的新手。
选项 1
try:
itemCode = items["itemCode"]
dbObject=db.GqlQuery("SELECT * FROM %s WHERE code=:1" % dbName,itemCode).get()
dbObject.delete()
except AttributeError:
print "There's no item with that code"
except KeyError:
print "Bad parameter name"
except:
print "Unknow error"
选项 2
try:
itemCode = items["itemCode"]
except KeyError:
print "Bad parameter name"
else:
dbObject=db.GqlQuery("SELECT * FROM %s WHERE code=:1" % dbName,itemCode).get()
try:
dbObject.delete()
except AttributeError:
print "There's no item with that code"
except:
print "Unknow error"
选项 3 您能想到的任何其他更好的选择。
选项 1,我们看到我将所有代码包装在一个 try 块中。 选项 2,它使用嵌套块。它在特定行语句上引发异常。
如果某处有错误,我会很高兴知道的。
【问题讨论】:
-
我不完全理解你的问题。在我看来,你的主要问题是理解 try, except, else, 最终是如何工作的。那是对的吗?如果是这样,我可以提供一个示例来解释这一点。
-
@inspectorG4dget - 我认为问题不在于它们是如何工作的(两个例子都是有效的)和一个风格偏好问题。
-
我不明白您为什么要删除
try:块和else:块中的对象,是我遗漏了什么还是没有意义? -
您可能应该使用
if dbObject is not None: dbObject.delete()而不是在此处捕获 AttributeError。 -
@inspectorG4dget Lattyware 这是关于编码风格的。代码做什么并不重要。 J.F.塞巴斯蒂安。我认为这是另一个主题,关于使用 if vs try 语句
标签: python exception python-2.7