我想在此PHP脚本中抛出异常或错误吗?

时间:2009-07-01 14:58:15

标签: php exception-handling

我有一个运行数据库查询的PHP脚本。现在,如果查询失败,我应该触发错误还是抛出异常?我注意到如果我执行后者,脚本执行将在面对异常后停止。

我的代码如下:

if (!$this->connection[0]->query($this->query))
    throw new Exception($this->connection[0]->error);

在这种情况下使用例外(查询失败)有哪些优缺点?

4 个答案:

答案 0 :(得分:3)

  

在这种情况下使用例外的优缺点是什么(查询失败)?

简单地:

  • 优点:您的应用可以优雅地处理失败的查询,如果需要,请记录,然后继续。
  • 缺点:表现。

那就是说,我认为你可能会关注错误的问题。 应该在异常发生时处理异常,但它们应该非常非常罕见地发生。如果你的查询有合理的失败机会,那么查询本身应该是你的重点而不是任何错误处理机制。

我的意思是改进查询的任何输入的验证,这可能会导致它阻塞,而不是查询的速度作为抵消任何由于错误处理而导致性能下降。换句话说,找出会导致查询失败的原因并确保无法实现此类状态。

考虑一下这个类比:如果你在一艘可能漏水的船上驶向湖面(你的询问),你不应该担心穿着潜水服(错误处理),因为你应该确保船是水密的。

答案 1 :(得分:2)

取决于您的一般错误处理策略和传递给此函数的查询。抛出异常本身是一个非常好的主意,恕我直言,如果他们被抓到某处并进行处理。

答案 2 :(得分:1)

我认为这取决于查询失败时的情况有多糟糕。如果查询执行正常至关重要,那么肯定是例外。

无论您决定哪种,请确保正常处理错误/异常。 (try..catch等)。

您还应该查看this stackoverflow question

答案 3 :(得分:0)

如果这是针对外部网站的,我倾向于在开发阶段详细处理错误。一旦网站准备好上线,我尽量不向最终用户提供有关错误的详细信息,尤其是出于安全原因的数据库详细信息。

这不是一般的答案,但在报告和处理外部网站上的错误时要牢记安全性。只是注意,因为这可能不是外部网站。

相关问题