对每个应用程序错误抛出异常

Ale*_*tau 4 php error-handling exception-handling exception

我有一个基于Zend Framwork的应用程序.在一个模型中,我从另一个模型中调用一个方法.当我调用这种方法时,我使用try-cath块来处理奇怪的情况.型号1.

try {
   $result  =  Module_Model2_Name->method();
} catch (Exception $e) {
   // Do Something
}
Run Code Online (Sandbox Code Playgroud)

如果我们在try块中找到一个throw,那么Catch应该可以工作.但我不知道我的申请的行为.如果它是Model2方法中的某个应用程序错误,则应抛出异常.在Model2的方法中我做下一件事,但它不起作用:

set_error_handler(create_function('$m = "Error"','throw new Exception($m);'), E_ALL);
Run Code Online (Sandbox Code Playgroud)

如何在每个PHP应用程序错误上抛出异常?非常感谢你.对不起我的英语不好.

Ali*_*aru 8

它看起来不错(测试它).

<?php
set_error_handler(create_function('$nr, $msg = "Error"','throw new Exception($m);'), E_ALL);
try{
    foreach($notHere as $var){}
}
catch(Exception $e){
    var_dump($e);
}
?>
Run Code Online (Sandbox Code Playgroud)

请注意:

使用用户定义的函数无法处理以下错误类型:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,以及调用set_error_handler()的文件中引发的大部分E_STRICT.

摘自PHP手册.