我有
$test = 'SomeClass';
$ins = new $test;
如果$test
的名称不存在,我希望能够捕获错误。
我不确定它抛出了什么类型的异常,因为PHP没有给我任何东西。
答案 0 :(得分:4)
首先检查:
if(class_exists($test)){
$ins = new $test;
}else{
die("Could not load class'" . $test ."'");
}
答案 1 :(得分:0)
除非您使用某些error handler,否则此类构造不会让您捕获任何错误。但是,您可以使用class_exists()
function检查类是否存在。
PS。您应该使用reflection,因为它更加详细和清晰。它还使用异常,因此您可以执行以下操作:
try {
$ref = new \ReflectionClass($className);
} catch (\LogicException $le) {
// class probably doesn't exist
}
答案 2 :(得分:0)
首先,您必须测试$ test类是否存在。 http://php.net/manual/en/function.class-exists.php
答案 3 :(得分:0)
使用PHP 5.3(或更高版本),您可以捕获从__autoload
抛出的异常function __autoload($name) {
// if class doesn't exist:
throw new Exception("Class $name not found");
// else, load class source
}
$test = 'SomeClass';
try {
$ins = new $test;
} catch (Exception $e) {
}