我只是在寻找一些最佳实践建议。
我有一项服务,“价目表服务”,用户可以在其中保存某种价目表。
有一些实例或配置可能会留下不一致的数据,在这些情况下,我想结束函数的执行。
例如,如果未在对象上设置customerId,或者在数据库中找不到销售人员的userId。
我喜欢异常在那里停止执行并允许您重新抛出异常的方式。这样做的问题是,我听说过不要将异常用于流控制。
当前,我只有一堆嵌套的if / elses,除非未设置$service_error_message
的局部变量,否则我不会提交交易。
如果$service_error_message
为空,那么我知道我的验证器都没有失败,可以保存。
有人对如何更好地处理这些情况有建议吗?
如果遇到无疑是致命的错误,则无法从中恢复,请清理并退出。如果您没有清理工作超出当前过程的范围(关闭文件/ DB连接/无论如何,生成一些错误输出等),那么简单地单击exit
就最有意义。如果错误可能是可恢复的,或者您想以有序方式([通过当前过程外部的某些方式清除/记录错误,那么异常是最有意义的。这是个案决定。
I've have heard exceptions aren't to be used for flow control
-是的,但这确实不适用于您所描述的情况。如果遇到实际的error
,则可以完全接受异常。您不应所做的是使用异常来确定接下来要执行哪段代码,类似于goto
的重新哈希。关于不做什么和为什么不做什么的很好的解释here。>>exit()
调用。