【发布时间】:2016-09-22 00:51:40
【问题描述】:
我使用自己的简单错误处理,实际上可以捕获并记录我需要的所有内容。但现在我需要用try{}catch(){} 捕捉错误。我预计有时会在那个地方发生的错误是“调用未定义的方法”错误。我可以这样捕捉它:
try {
$someObject->someMethodTheObjectDoesntProvide();
} catch (Error $e) {
// do something else
}
但是catch 子句中的Error 类有点通用。我只想捕获这种类型的错误。
有没有办法将捕捉到特定“类型”的错误?
不使用strpos($errorMessage)... ;)
【问题讨论】:
-
不,只有不同的错误/异常类;这只是一个通用的
Error类 -
我不确定
__call()是否会拦截对不存在的方法(或仅对不可访问的方法)的调用,并允许您抛出一个自定义异常,然后可以捕获并处理该异常与其他错误不同 -
您可能想要捕获发生的任何错误,而不仅仅是一个特定的错误。但是您可以根据抛出的错误类型在
catch块中采取特定操作 -
在你的类中使用一个神奇的 __call() 方法可用于在方法不存在时抛出自定义异常 - Demo
标签: php error-handling exception-handling try-catch php-7