我使用自己的简单错误处理,实际上可以捕获和记录我需要的一切。但现在我需要抓住try{}catch(){}
的错误。我希望有时在那个地方发生的错误是“调用未定义的方法”错误。我可以像这样抓住它:
try {
$someObject->someMethodTheObjectDoesntProvide();
} catch (Error $e) {
// do something else
}
但Error
条款中的catch
类有点泛泛。我只想抓住这种类型的错误。
有没有办法将捕获限制为特定的“类型”错误?
不使用strpos($errorMessage)
......;)
如果方法不存在,可以使用类中的magic __call()
方法抛出自定义异常
class myCustomException extends Exception {
}
class someClass {
public function __call($name, $arguments) {
if (!method_exists($this, $name)) {
throw new myCustomException($name . ' has shuffled the mortal coil');
}
}
}
$someObject = new someClass();
try {
$someObject->someMethodTheObjectDoesntProvide();
} catch (myCustomException $e) {
echo $e->getMessage();
}
我知道我已经超过18个月太晚但是你考虑过做什么@Mark Baker建议但是扔了一个BadMethodCallException
?