处理例外的设计 - 谷歌应用引擎

时间:2009-05-06 16:51:40

标签: python google-app-engine exception-handling web-applications

我正在谷歌应用引擎(webapp框架)上开发一个项目。我需要你的人来评估我如何处理异常。

我正在处理4种类型的例外:

  1. 编程例外
  2. 用户输入错误
  3. 网址不正确
  4. 查询字符串不正确
  5. 以下是我处理它们的方法:

    1. 我已经将webapp.requesthandler类子类化,并覆盖了handle_exceptions方法。每当发生异常时,我都会将用户带到友好的“我们很抱歉”页面,同时向管理员发送带有回溯的消息。

    2. 在客户端,我(将)使用js并在服务器端验证。 除了根据编程逻辑验证输入(检查:现金输入是浮动类型?)和业务规则(检查:用户是否有足够的点来采取该行动?),我在这里(作为具有非网络经验的编码器) ,我还要检查恶意意图。我应该采取什么措施来对付恶意行为?

    3. 我有一个处理错误网址的全能网址。也就是说,我将用户带到一个自定义的“页面不存在”页面。我想在这里我没有任何问题。

    4. 错误的查询字符串如果留给自己,可能会引发异常。如果ID不存在,则该方法返回None(异常即将发生)。如果参数不方便,代码会引发异常。在这里,我认为我必须提出404并将用户带到自定义“页面不存在”页面。我该怎么办?

    5. 你有什么看法?提前谢谢..

2 个答案:

答案 0 :(得分:5)

你似乎已经很好地思考了事情。我要添加的唯一内容是您可能需要查看Bloog作为示例。 Bloog是一个用Python编写的用于App Engine的非常好的开源博客引擎。

此外,在第2点,请注意these typesCross Scripting次攻击。

至于#4,请注意,404页面可以为您的设计添加一些color and creativity

答案 1 :(得分:0)

广告。 #4:我通常将查询字符串视为非必要的。如果查询字符串出现任何问题,我只会提供裸资源页面(好像没有查询),可能会向用户提供一些信息,查询字符串有什么问题。

这会导致类似于#3的问题:用户是如何进入此错误查询的?我的应用程序在某处产生了错误的URL吗?或者是某些外部服务中的过时链接,还是已保存的书签? HTTP_REFERER可能包含一些线索,但当然不具有权威性,因此我会记录有问题的查询(带有一些额外的HTTP标头)并尝试调查此案例。