当我发起一个不存在的类时,它会抛出错误,我不想被该错误停止。所以我尝试trycatch
方法,但它仍然给我同样的错误,有人可以解释为什么没有抓住这个错误
我试过了
try{$obj = new classname();}
catch(Exception $e){ echo 'class does not exist, move on' ;}
有人可以解释为什么无法捕获此错误吗?
他们是另一种捕捉和处理此类错误的方式吗?
我们可以通过try catch方法捕获mysql
致命错误,所以不要说尝试捕获方法无法处理致命错误
答案 0 :(得分:0)
解决此问题的两种方法,使用自动加载器为每个不存在的对象运行自定义编写的函数,这样您就可以尝试包含"按需提交文件。
function autoload($objname){
if(is_readable(($f = '/path/to/class/'.$objname.'.php'))){
include $f;
} else {
throw Exception("$f does not exist");
}
}
spl_autoload_register('autoload');
new classname(); // try to load /path/to/class/classname.php
或者您可以升级到PHP 7,其中错误逻辑几乎没有进行大修:
所以像这样的代码可以工作:
try{
$obj = new classname();
} catch(Error $er){
echo 'class does not exist, move on';
} catch(Exception $ex){
echo 'a custom exception has been thrown:' . $ex->getMessage();
} catch(Throwable $t){
// Obsolete code, as Throwables are either Error or Exception, that were caught above.
}