我最近开始用GAE和Python开发我的第一个网络应用程序,这很有趣。
我一直遇到的一个问题是当我不指望它们时会引发异常(因为我是网络应用的新手)。我想:
我应该在每次看到put和get的时候放一个try / except块吗? 还有什么其他操作可能会失败,我应该用try / except包装?
答案 0 :(得分:10)
您可以在请求处理程序上创建一个名为handle_exception
的方法来处理意外情况。
webapp框架会在遇到问题时自动调用
class YourHandler(webapp.RequestHandler):
def handle_exception(self, exception, mode):
# run the default exception handling
webapp.RequestHandler.handle_exception(self,exception, mode)
# note the error in the log
logging.error("Something bad happend: %s" % str(exception))
# tell your users a friendly message
self.response.out.write("Sorry lovely users, something went wrong")
答案 1 :(得分:1)
您可以将视图包装在一个方法中,该方法将捕获所有异常,记录它们并返回一个漂亮的500错误页面。
def prevent_error_display(fn):
"""Returns either the original request or 500 error page"""
def wrap(self, *args, **kwargs):
try:
return fn(self, *args, **kwargs)
except Exception, e:
# ... log ...
self.response.set_status(500)
self.response.out.write('Something bad happened back here!')
wrap.__doc__ = fn.__doc__
return wrap
# A sample request handler
class PageHandler(webapp.RequestHandler):
@prevent_error_display
def get(self):
# process your page request