【发布时间】:2016-06-17 16:01:54
【问题描述】:
我想在 yii2 项目中使用 SoapClient。但我需要使用 try-catch 管理错误。但这行不通!
yii2 代码示例:
class SiteController extends Controller
{
public function actionIndex()
{
try{
new \SoapClient('a',['cache_wsdl' => WSDL_CACHE_MEMORY]);
}catch(\SoapFault $e){
echo '***************';
}
}
}
yii 框架输出:
PHP 致命错误 – yii\base\ErrorException SOAP-ERROR: Parsing WSDL: 无法从“a”加载:无法加载外部实体“a”
但在 test.php(没有 yii 框架)中:
try{
new SoapClient('a',['cache_wsdl' => WSDL_CACHE_MEMORY]);
}catch(SoapFault $e){
echo '***************';
}
输出
***************
为什么捕获 SoapFault 不起作用? 但在单个 php 脚本中可以工作并打印星星。
【问题讨论】:
-
try catch 不会捕获致命的。你遇到了什么错误? (注意,除非是致命的,但你不要说。)
-
似乎这是一个可捕获的致命错误,因为单个 php 脚本中的 try-catch 有效,但在 yii2 框架中无效。可捕获和不可捕获有什么区别?
-
如果我记得的话,可捕获的意味着致命事件是您可以使用自定义错误处理程序捕获的,不可捕获的只是杀死该进程,然后不管您做什么。
-
是的,这是可以捕捉的。为什么在 yii 中不起作用?
-
不知道,你仍然没有向我们展示实际的错误。