没有定义命名空间的情况下 , Exception和Exception 均可正常执行抛出异常;
定义命名空间的情况 , Exception 会在定义的命名空间下找对应的异常类 , 如果没有定义异常类 , 则会报错 ;
定义命名空间的情况 , Exception 会按照php默认的异常类执行抛出异常 ;
建议: 抛出异常 使用 Exception !
#1: 没有定义命名空间 使用Exception
<?php
try {
throw new Exception("抛出异常");
} catch (Exception $e) {
echo '捕获到异常'.$e->getMessage();
}
#1> 执行结果
捕获到异常抛出异常
#2: 没有定义命名空间 使用Exception
<?php
try {
throw new Exception("抛出异常");
} catch (Exception $e) {
echo '捕获到异常'.$e->getMessage();
}
#2> 执行结果
捕获到异常抛出异常
#3: 有定义命名空间 使用Exception
<?php
namespace Test;
try {
throw new Exception("抛出异常");
} catch (Exception $e) {
echo '捕获到异常'.$e->getMessage();
}
#3> 执行结果
Fatal error: Uncaught Error: Class 'AnxiaojingException' not found *** Stack trace: #0 {main} thrown in ***
#4: 有定义命名空间 使用Exception
<?php
namespace Test;
try {
throw new Exception("抛出异常");
} catch (Exception $e) {
echo '捕获到异常'.$e->getMessage();
}
#4> 执行结果
捕获到异常抛出异常