2

我的代码中有一个 LDAP 服务器请求。我打开一个连接ldap_connect并检查返回的描述符是否有效,然后我ldap_search使用打开的描述符发出搜索请求。但有时由于网络故障或其他原因,ldap_search失败并发出警告Search: Can't contact LDAP server

在我的生产服务器上,我将所有警告视为致命错误,因此整个页面呈现失败。

我应该只是在前面加上ldap_search@检查返回的值(我现在也检查它)还是有更好的方法来处理这个?

4

2 回答 2

1

就我个人而言,我同意你的看法,只需将 a 推到@那里并手动检查错误情况 - 我这样做是为了mysql_connectandMemcache->connect以及我所做的任何fsockopen调用,因为这也可以允许诸如“在死前再试几次”之类的事情。

但是,我敢肯定大多数疯子会告诉您永远不要使用@,而应该使用自定义错误处理程序。所以……由你决定!

于 2013-06-20T02:42:41.050 回答
1

您可以通过设置自己的错误处理程序将警告变成异常。只需捕获所有警告并在回调中抛出异常。这样您就不必处理不需要的输出,但有机会恢复(将用户引导到临时错误页面),这是您无法处理致命错误的。

有时,外部资源会引发警告,并且还允许您检查是否发生错误(例如 mysqli。)在这种情况下,您可以使用 忽略警告@,但请确保检查是否发生错误。

我不会仅仅压制警告,而不确保以其他方式处理它。用户想知道为什么会出错,特别是如果情况只是暂时的。

作为旁注:我认为 php 中的警告是一个荒谬的概念。代码要么失败,要么没有。如果它失败了,我希望能够处理它,而不是跳过箍。请给我一个例外!

于 2013-06-20T02:44:02.157 回答