我已经使用 GAE 一年多了,对我来说最难处理的事情之一是我原本写得很好的代码可能偶尔会因为 GAE 打嗝而引发异常。
对于未处理的异常,我已经有了一个不错的程序。我的自定义请求处理程序提供了一个不错的错误页面,管理员会收到一封电子邮件。然而,这是一种糟糕的用户体验。
我想做的是处理异常,以便我可以立即采取适当的措施并防止出现一些通用错误页面。
我的问题是:
- 我应该捕获哪些异常?
- 我应该在哪里抓到它们?
我意识到对此的完整答案是不切实际的,但我正在为最常见的情况寻找一些最佳实践。
对于我应该捕获的异常,我有时会看到不在官方列表中的异常。例如,我收到了 UnknownError。
对于在哪里捕获异常,我想知道是否应该在每个 get/post 方法中捕获它们。像这样的东西:
def get(self):
try:
# normal get processing
except SomeException:
# redirect to the same page to try again and fix any data if necessary
我很惊讶没有更多关于此的信息,因为这是任何 GAE 应用程序的一个重要方面。这里和这里有一些很好的文章,但这些并不能回答我的问题。