由于业务逻辑错误而保留功能的最佳做法

问题描述 投票:1回答:2

我只是在寻找一些最佳实践建议。

我有一项服务,“价目表服务”,用户可以在其中保存某种价目表。

有一些实例或配置可能会留下不一致的数据,在这些情况下,我想结束函数的执行。

例如,如果未在对象上设置customerId,或者在数据库中找不到销售人员的userId。


我的问题是,遇到业务逻辑错误时离开函数的最佳方法是什么?

我喜欢异常在那里停止执行并允许您重新抛出异常的方式。这样做的问题是,我听说过不要将异常用于流控制。

当前,我只有一堆嵌套的if / elses,除非未设置$service_error_message的局部变量,否则我不会提交交易。

如果$service_error_message为空,那么我知道我的验证器都没有失败,可以保存。

有人对如何更好地处理这些情况有建议吗?

php exception business-logic control-flow
2个回答
2
投票

如果遇到无疑是致命的错误,则无法从中恢复,请清理并退出。如果您没有清理工作超出当前过程的范围(关闭文件/ DB连接/无论如何,生成一些错误输出等),那么简单地单击exit就最有意义。如果错误可能是可恢复的,或者您想以有序方式([通过当前过程外部的某些方式清除/记录错误,那么异常是最有意义的。这是个案决定。

I've have heard exceptions aren't to be used for flow control-是的,但这确实不适用于您所描述的情况。如果遇到实际的

error

,则可以完全接受异常。您不应所做的是使用异常来确定接下来要执行哪段代码,类似于goto的重新哈希。关于不做什么和为什么不做什么的很好的解释here。>>

1
投票
[通常,我不会将Exception用于流量控制,就像我期望某些条件经常发生在要从脚本中解救的位置一样,我会使用exit()调用。
© www.soinside.com 2019 - 2024. All rights reserved.