使用Try / Except确定应用引擎数据存储区中是否存在Model ID

时间:2013-06-06 14:40:12

标签: python google-app-engine google-cloud-datastore

我正在尝试确定数据存储区中是否存在按实体ID存在的模型;我正在防止用户操纵参数/page?page_id=12345

 try:
     page = Page.get_by_id(int(self.request.get('page_id')))
 except:
     self.response.out.write('Invalid page id')
     return

这是Try / Except的好/可接受使用吗?

1 个答案:

答案 0 :(得分:3)

使用裸except 从不是可接受的理由。始终只捕获 您实际准备处理的例外情况。

然而,在这种情况下,它比无用更糟糕。 get_by_id不会引发异常,所以没有必要抓一个。 (int当然可以提升ValueError如果值没有转换为整数,但你最好单独处理它。)如果具有该ID的实体不存在,{{{ 1}}只返回None。你应该检查一下并采取适当的行动。