我有一个运行数据库查询的PHP脚本。现在,如果查询失败,我应该触发错误还是抛出异常?我注意到如果我执行后者,脚本执行将在面对异常后停止。
我的代码如下:
if (!$this->connection[0]->query($this->query))
throw new Exception($this->connection[0]->error);
在这种情况下使用例外(查询失败)有哪些优缺点?
答案 0 :(得分:3)
在这种情况下使用例外的优缺点是什么(查询失败)?
简单地:
那就是说,我认为你可能会关注错误的问题。 你应该在异常发生时处理异常,但它们应该非常非常罕见地发生。如果你的查询有合理的失败机会,那么查询本身应该是你的重点而不是任何错误处理机制。
我的意思是改进查询的任何输入的验证,这可能会导致它阻塞,而不是查询的速度作为抵消任何由于错误处理而导致性能下降。换句话说,找出会导致查询失败的原因并确保无法实现此类状态。
考虑一下这个类比:如果你在一艘可能漏水的船上驶向湖面(你的询问),你不应该担心穿着潜水服(错误处理),因为你应该确保船是水密的。
答案 1 :(得分:2)
取决于您的一般错误处理策略和传递给此函数的查询。抛出异常本身是一个非常好的主意,恕我直言,如果他们被抓到某处并进行处理。
答案 2 :(得分:1)
我认为这取决于查询失败时的情况有多糟糕。如果查询执行正常至关重要,那么肯定是例外。
无论您决定哪种,请确保正常处理错误/异常。 (try..catch等)。
您还应该查看this stackoverflow question。
答案 3 :(得分:0)
如果这是针对外部网站的,我倾向于在开发阶段详细处理错误。一旦网站准备好上线,我尽量不向最终用户提供有关错误的详细信息,尤其是出于安全原因的数据库详细信息。
这不是一般的答案,但在报告和处理外部网站上的错误时要牢记安全性。只是注意,因为这可能不是外部网站。