异常处理设计 - Google App Engine
我正在开发一个基于谷歌应用引擎的项目(使用webapp框架)。我希望大家帮我看看我处理异常的方式。
我处理的异常有四种:
- 编程异常
- 用户输入错误
- 错误的URL
- 错误的查询字符串
这是我处理这些异常的方法:
我创建了一个新的类,继承了webapp.requesthandler类,并重写了handle_exceptions方法。每当发生异常时,我会把用户引导到一个友好的“我们很抱歉”的页面,同时把错误信息发送给管理员。
在客户端,我会使用JavaScript,并且在服务器端也会进行验证。作为一个没有网页经验的程序员,我认为除了根据编程逻辑(比如检查现金输入是否为浮点数)和业务规则(比如检查用户是否有足够的积分来执行某个操作)来验证输入外,我还需要防范恶意行为。我应该采取什么措施来防止恶意操作呢?
我有一个通用的URL来处理错误的URL。也就是说,我会把用户引导到一个自定义的“页面不存在”页面。在这方面,我觉得没什么问题。
错误的查询字符串如果不处理,可能会引发异常。如果某个ID不存在,方法会返回None(这意味着会有异常发生)。如果参数不合适,代码会引发异常。在这种情况下,我认为我应该返回404错误,并把用户引导到自定义的“页面不存在”页面。我该怎么做呢?
你们有什么看法?提前谢谢大家。
2 个回答
广告 #4:我通常把查询字符串当作不太重要的东西。如果查询字符串有问题,我会直接展示一个简单的资源页面(就像根本没有查询字符串一样),可能还会给用户一些信息,告诉他们查询字符串哪里出了问题。
这就引出了一个和你提到的第3个问题类似的问题:用户是怎么进入这个错误的查询的?是我的应用程序在某个地方生成了错误的链接吗?还是某个外部服务里的过时链接,或者是保存的书签?HTTP_REFERER
可能会提供一些线索,但当然这并不是绝对可靠的,所以我会记录下这个有问题的查询(连同一些额外的HTTP头信息),然后尝试调查一下情况。