如何处理php中的异常/错误?

时间:2010-05-09 17:47:37

标签: php design-patterns oop

当使用第三方库时,它们往往会向浏览器抛出异常,从而杀死脚本。

例如。如果我使用doctrine并将重复记录插入数据库,则会抛出异常。

我想知道,处理这些例外的最佳做法是什么。

我应该总是试一试吗?赶上?

但这并不意味着我会尝试...抓住所有的脚本和我使用的每个功能/类?还是只是为了调试?

我不太清楚。

如果数据库中已存在记录,我想告诉用户“记录已存在”。

如果我编写一个库或一个函数,当我想创建一个错误时,我应该总是使用“throw new Expcetion($ message,$ code)”吗?

请说明应如何创建/处理异常/错误。

由于

2 个答案:

答案 0 :(得分:1)

捕获这些异常的唯一方法是使用try catch块。或者,如果您不希望首先发生异常,则需要进行尽职调查,并在尝试插入记录之前检查记录是否已存在。

如果感觉你在整个地方都在使用它,那么你可能需要创建一种方法来处理这个问题(不要重复自己)。

答案 1 :(得分:0)

我不知道Doctrine,但是关于你的具体用法,也许有办法确定你是否面临重复的条目,如:

try { /* Doctrine code here */ } catch (DuplicateEntryException $e) { /* The record already exists */ } catch (Exception $e) { /* Unexpected error handling */ }

或许你必须检查Exception代码是否等于1062,这是重复条目的MySQL错误代码。


任何可能引发异常的代码都应该在try / catch块中。在PHP中很难,因为您无法知道哪个方法抛出异常。

您的主PHP文件中还应该有一个很大的try / catch块,可以避免向用户显示堆栈跟踪,并记录原因。也许您可以使用set_exception_handler