【发布时间】:2011-04-28 20:53:26
【问题描述】:
here 提出了类似的问题,但由于答案没有回答我的问题,我在问:
我几乎从未使用过trigger_error,而是总是抛出异常,因为在我看来错误是遗留问题。但我改变了主意,我认为它们可以共存。在某些情况下,触发错误更有意义。
我正在更新this library,这个问题涉及send 方法,但足够笼统。这是我的推理:
如果未设置 API 密钥常量,则这不是可捕获的错误。这是一个编程错误,应该这样对待。
如果电子邮件地址无效,则应该可以捕获。这很可能是用户错误。
我是疯子吗?这是不必要和烦人的,还是有意义的?
【问题讨论】:
-
错误不可恢复,异常可重试。出现错误后无法继续,但通常可以忽略异常。如果您无法写入磁盘,那就是错误。如果数据库无法连接,那就是错误。如果没有设置环境,那就是错误。但如果 API 服务关闭,这是一个例外 - 稍后再试。当然,您对不可恢复的想法是主观的。
-
使用 trigger_error() 的一种情况是当您只想发出 E_USER_NOTICE 或 E_USER_WARNING 时,它们都不会停止程序执行。例如,使用您的库的人设置了一个参数,虽然从技术上讲不是程序错误,但很可能不会产生预期的结果。发出警告或通知似乎是处理该问题而不是停止执行的正确方法。
标签: php exception exception-handling error-handling