我第一次玩自定义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“存在”?希望第三个问题有意义:我的直觉告诉我,如果我能够做到这一点,那么我的方法应该是可能的。
我认为异常不是逻辑的正确地方,它应该包含有关错误的信息。APDOException
很有用,因为您知道它源自您的PDO代码,如果您抛出A,则MyException
至少需要提供更多(有用的)信息。
如果您有一个自定义的异常处理程序,则可以通过进行区分instanceof
。
function exception_handler($exception) {
if ($exception instanceof PDOException) {
//mail
}
//always log/etc.
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句