我已经定义是这样我的自定义异常类:在Exception构造函数中调用方法是否可接受?
class EPPException extends Exception
{
public function __construct($text, $code, $message = null)
{
EPPHelper::logError($text, $code, $this->getTraceAsString, $message);
parent::__construct($text, $code, null);
}
}
而抛出异常
throw new EPPException($text, $code, $message);
我的问题是 - 它从设计上来看可以接受的使用构造不仅初始化对象,但执行一些额外的任务,如在这种情况下调用静态方法?
UPDATE
另一种选择是创建一个处理日志记录和抛出异常的静态方法
class EPPException extends Exception
{
public function __construct($text, $code, $message = null)
{
parent::__construct($text, $code, null);
}
}
public static function raiseException($text, $code, $message = mull)
{
EPPHelper::logError($text, $code, $this->getTraceAsString, $message);
throw new EPPException($text, $code, $message);
}
EPPHElper::raiseExeption($text, $code);
这种方法的问题是,它会弄乱堆栈跟踪
看起来不错。为什么不 ? – BlitZ
只要确保没有办法让异常处理程序抛出异常并最终陷入循环 – Anigel
为什么创建静态方法,何时可以停止查询并在全局变量中使用函数? (因为这基本上是你现在正在做的) –