2010-05-09 104 views
0

我不知道在PHP中抛出的异常将终止在PHP脚本?异常抛出终止脚本?

因为当我保存已经在教义中创建的条目,它会引发异常。

我捕捉到异常并忽略它(以便用户不会看到它),但脚本似乎被终止。

有没有办法捕捉异常并保持脚本活着?

感谢

+3

是的,我在最后一个问题中展示了如何做到这一点。 http://stackoverflow.com/questions/2796863/unknown-exception-error-in-php/2796903#2796903 – 2010-05-09 07:31:11

+1

是的异常将终止脚本。您可能会从catch块中抛出另一个异常,或者另一个错误可能导致脚本终止。调试我的朋友! :) – Andreas 2010-05-09 07:38:25

回答

2

你需要用函数调用(一个或多个)可以在一个try...catch块抛出异常。

class EvilException extends Exception {} 
class BadException extends Exception {} 

function someMethodThatMayThrowException() { 
    ... 
    ... 
    throw new EvilException("I am an evil exception. HAHAHAHA"); 
} 
try { 

someMethodThatMayThrowException(); 

} catch(BadException $e) { 
    //deal with BadException here... 
} catch(EvilException $e) { 
    //deal with EvilException here... 
    throw new Exception("will be caught in next catch block"); 
} catch(Exception $e) { 
    echo $e->getMessage(); //echoes the string: "will be caught in next catch block" 
} 

如果发现异常,脚本将不会终止。如果抛出的异常没有跳转到catch块,上述情况就会发生。

+1

+1您还可以在'catch'块中再次抛出异常以传递它。 – 2010-05-09 07:48:00