最近我一直在争论是否在错误的用户输入时抛出异常。
示例:虽然我的帐户未激活,但我正在尝试登录。作为使用面向对象语言的程序员,我可以用几种方法来处理这个问题。对于这种情况,让我们坚持这两个:
- 从本地
Service
抛出一个具有代表性的自定义Exception
,扩展Exception
。在class
处理用户输入中捕获此问题。 - 使用
Validator
呼叫本地Service
查看该帐号是否登录
我的愿景,像许多其他人一样,Exception
代表程序中的错误。例如:数据库不可达,解析数据错误。
与其他许多人一样,在没有被激活的情况下登录的情况在任何用例上都不是一个成功的场景,因此会失败。这是不应该发生的,值得抛出一个Exception
。
就我个人而言,我会用Validator
来处理这类问题,坚持使用Exception
来处理程序中的错误。然而,我希望得到一个建设性的答案,哪种情况是首选。如果可能的话,参考任何文档。我使用Java
,虽然这个问题并不局限于任何语言(只要它是OO我猜)。
在验证错误的情况下,必须中断应用程序的流程。例如,如果提供了无效的邮件地址,则必须终止签名进程。因此,异常可用于用户输入验证。
作为示例使用,您可以检查JSF。它得益于Java的异常机制来处理用户输入验证。以下链接可能有用:
- http://www.mkyong.com/jsf2/custom-validator-in-jsf-2-0/
- http://www.ibm.com/developerworks/library/j-jsf3/