我正在编写一个用户输入库,以便轻松管理动态创建表单以询问用户数据。
我想让最终开发人员不得不“思考”最低限度,所以我让他们抛出异常而不是返回'true'或'false'并记住处理返回值等。
实际上,它的效果非常好。抛出异常也使我能够自动记录日志中的用户错误,所有这些都是“免费”的,因为异常的创建会导致日志记录完成。
说完所有这些之后,我想知道这是否真的“反对最佳做法”?我是否应该仅在我甚至不期望用户输入错误的时候保留例外,或者可以说“来自用户的数据有问题......这是一个例外”?
有什么想法吗?
答案 0 :(得分:10)
例外是针对例外情况。
错误的用户输入是预期的情况,并且(在我看来)在显示非异常错误消息之前,您应该始终尝试验证并按下正确的格式。
答案 1 :(得分:3)
symfony的表单框架验证器抛出异常。
就个人而言,我认为这很好,因为它迫使开发人员处理来自输入的错误,这显然很重要。
答案 2 :(得分:3)
我同意Gareth的观点。错误的用户输入是预期的条件。
请考虑这一点(这是Java中的常用策略):创建一个Errors
类。将此类对象传递给验证器。验证器可以保持对象不变,或者可以向其添加一个或多个错误消息及其相关字段。在通过所有验证器传递之后,检查Errors
对象以查看它是否为空,如果没有,请将其读取并再次显示该表单以及错误。
答案 3 :(得分:1)
在我个人看来,它与你要处理错误的地方有关。如果它足够在代码树中,那么Exeption将是明智的。如果您只是在它下方3行,它会浪费资源(它确实包含完整的回溯),并且“内联”错误处理会很好,您可以轻松添加(相同)日志记录功能。