如何捕获 PHP 7 中的 "Call to undefined method" 错误?
How to catch the "Call to undefined method" error in PHP 7?
我使用我自己的简单错误处理,实际上可以捕获并记录我需要的一切。但是现在我需要用 try{}catch(){}
捕获错误。我预计有时会在那个地方发生的错误是 "Call to undefined method" 错误。我可以这样捕捉它:
try {
$someObject->someMethodTheObjectDoesntProvide();
} catch (Error $e) {
// do something else
}
但是 catch
子句中的 Error
class 有点笼统。我只想捕获这种类型的错误。
有没有办法限制捕获特定的 "type" 错误?
不使用 strpos($errorMessage)
... ;)
在您的 类 中使用魔法 __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 suggested but instead throw a BadMethodCallException
?
我使用我自己的简单错误处理,实际上可以捕获并记录我需要的一切。但是现在我需要用 try{}catch(){}
捕获错误。我预计有时会在那个地方发生的错误是 "Call to undefined method" 错误。我可以这样捕捉它:
try {
$someObject->someMethodTheObjectDoesntProvide();
} catch (Error $e) {
// do something else
}
但是 catch
子句中的 Error
class 有点笼统。我只想捕获这种类型的错误。
有没有办法限制捕获特定的 "type" 错误?
不使用 strpos($errorMessage)
... ;)
在您的 类 中使用魔法 __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 suggested but instead throw a BadMethodCallException
?