【发布时间】:2014-07-20 13:06:36
【问题描述】:
我是第一次使用自定义 PHP 异常,希望在清理一些代码方面得到一些帮助。特别是,我正在捕获 PDO 错误,并编写了一个类来向自己发送错误的堆栈跟踪。我目前做事的方式如下:
try {
//db stuff
} catch (PDOException $e) {
throw new My_Own_Exception($e);
exit;
}
我的 My_Own_Exception 在哪里完成这项工作:
class My_Own_Exception extends Exception
{
/*code to mail myself error info: this part works!
}
虽然上述方法可行,但我觉得我应该能够写一些更干净的东西,例如:
try {
} catch (My_Own_Exception $e) {
exit;
}
其中 My_Own_Exception 是 PDOException 类的扩展。关于这个的几个问题:首先,第二种方法是更好的方法吗?第二,如果可以,有可能吗?第三,如果可能的话,如果 My_Own_Exception 从未在任何地方实例化,我如何让 PHP 知道 My_Own_Exception “存在”?希望第三个问题有点道理:我的直觉告诉我,如果我能做到这一点,那么我的方法应该是可行的。
【问题讨论】:
-
您确定例外是逻辑的正确位置,例如通过电子邮件发送自己的东西吗?为什么不直接捕获 PDOExceptions 并邮寄它们呢?您无法影响 PHP 将抛出哪些异常,因此像在第一个代码中一样捕获它们并处理它们 - 不要为了琐碎的事情将一个“转换”为另一个
-
codereview.stackexchange.com
-
我想你要找的是a custom exception handler。基本上,这意味着 .. 不是您将拥有一种灵活、简单的方式来处理异常,而不是您想要的。
-
我同意@kingkero 我认为您不想为此使用另一个
Exception。 -
谢谢@kingkero。您可能会说,我对创建自定义异常的想法很陌生,我不确定什么是“最佳实践”;尽管根据您的评论,很明显我什至还不知道“良好做法”是什么!另外,根据您的想法,我不确定这个问题是否会有一个有意义的“答案”。如果您可以将他的评论移至建议的答案,那么我很乐意接受。
标签: php class pdo custom-exceptions