我有这样定义的自定义异常类:
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);
我的问题是 - 从设计的角度来看,使用构造函数不仅可以初始化对象而且还可以执行一些额外的任务,比如在这种情况下调用静态方法?
更新
另一种选择是创建一个静态方法来处理日志记录并引发异常
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);
这种方法的问题是它会弄乱堆栈跟踪