代码之家  ›  专栏  ›  技术社区  ›  Narcissus

我应该对用户输入错误抛出异常吗?

php
  •  3
  • Narcissus  · 技术社区  · 14 年前

    我正在编写一个用户输入库来轻松管理表单的动态创建,以便向用户请求数据。

    我想让最终开发人员“思考”最小值,所以我让他们抛出异常,而不是返回“true”或“false”,并记住处理返回值等。

    事实上,这一切都很顺利。抛出异常还为我带来了一个附带的好处,即能够自动在日志中记录用户错误,所有这些都是免费的,因为创建异常会导致日志记录完成。

    说了这么多,我想知道这是否真的是“违背最佳实践”?我应该只在我没有预料到用户输入错误的时候才保留异常,还是可以说“来自用户的数据有问题。。。这是个例外“?

    有什么想法吗?

    4 回复  |  直到 14 年前
        1
  •  10
  •   Gareth    14 年前

    例外情况除外。

    预期 在我看来,在显示非异常错误消息之前,您应该始终尝试验证并将其转换为正确的格式。

        2
  •  4
  •   Stephen Melrose    14 年前

    symfony的表单框架验证器抛出异常。

    就我个人而言,我认为这很好,而且更好,因为它迫使开发人员处理来自输入的错误,这显然很重要。

        3
  •  3
  •   Artefacto    14 年前

    预期 条件。

    考虑一下这个(这是Java中的一个常用策略):创建一个 Errors 班级。将此类型的对象传递给验证器。验证器可以保持对象不变,也可以向其添加一个或多个错误消息及其相关字段。在您通过所有的验证器之后,检查 错误

        4
  •  1
  •   Wrikken    14 年前

    在我个人看来,这与你将在哪里处理错误有关。如果它在代码树中的位置足够高,那么一个例外就是明智的。如果只在下面3行捕获它,那么这是一种资源浪费(它确实包含完整的回溯),并且“内联”错误处理就可以了,您可以轻松地添加(相同的)日志记录功能。