当使用第三方库时,它们往往会向浏览器抛出异常,从而杀死脚本。
例如。如果我使用doctrine并将重复记录插入数据库,则会抛出异常。
我想知道,处理这些例外的最佳做法是什么。
我应该总是试一试吗?赶上?
但这并不意味着我会尝试...抓住所有的脚本和我使用的每个功能/类?还是只是为了调试?
我不太清楚。
如果数据库中已存在记录,我想告诉用户“记录已存在”。
如果我编写一个库或一个函数,当我想创建一个错误时,我应该总是使用“throw new Expcetion($ message,$ code)”吗?
请说明应如何创建/处理异常/错误。
由于
答案 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。