在MyApp
命名空间中,我有以下内容:
$class='MyApp\Callbacks\\'.$class;
$this->callback[$callBackId]=new $class();
此对象位于MyApp\Callbacks
命名空间中,可能会引发CallbackException
(\MyApp\Callbacks\CallbackException
)异常。
我发现自己经常做以下事情:
try {
$this->callback[$callBackId]->someMethod();
}
catch(\MyApp\Callbacks\CallbackException $e) {
throw new MyAppExeption($e->getMessage(),$e->getCode());
}
如何将这些例外转换为MyAppException
而不单独捕获它们。我在想可能的解决方案是:
\MyApp\MyAppExeption
例外。这闻起来没气味。\MyApp\MyAppExeption
异常注入此对象。也不确定。\MyApp\Callbacks\CallbackException
抓住MyAppExeption
。不要这么认为。请指教。感谢
答案 0 :(得分:0)
我目前只需要公开几种方法,所以我对它们进行了硬编码。如果我以后想要更多,可能会包装在一个类中并使用__invoke
。
class MyApp
{
private $callbacks;
public function __construct($callbacks)
{
$this->callbacks=$callbacks;
}
public function someMethod($x,$y) {
try {
$this->someMethod($x,$y);
}
catch(\MyApp\Callbacks\CallbackException $e) {
//Modify if desired
throw new MyAppExeption($e->getMessage(),$e->getCode());
}
}
}