我听说将所有错误转换为异常是一个好习惯。我完全同意这一点,该解决方案的众多优点之一是我只有一个处理程序,而不是两个单独的处理程序——用于错误和异常。
但是,将通知/警告转换为异常会在发生异常时停止脚本执行。这是预期的行为吗?
您必须小心使用异常处理错误。对此有两种思想流派。
一所学校指出,对错误使用异常是一件坏事,通常应谨慎使用异常,因为它们可能导致控制流混乱。
另一所学校喜欢它们,因为必须处理异常,并且它们可以防止您的代码被 if 语句弄乱。
无论如何,如果您使用异常,您必须决定正确处理。当你抓住它们时会发生什么?你能恢复吗?你将如何康复?你会优雅地终止吗?
简单地使用异常并不是故事的结局,也不是很长的一段时间。
您可以捕获异常。示例函数:
function myFunction($num){
if(!is_int($num)){
throw new Exception('Int expected. ' . gettype($num) . ' given instead.');
}
}
然后捕获任何可能会或可能不会抛出的异常(如果捕获它们是有意义的):
try{
myFunction('Hello?');
}
catch(Exception $e){
//Do something
var_dump($e);
}
您还应该查看函数set_exception_handler:
如果在 try/catch 块中未捕获到异常,则设置默认异常处理程序。调用 exception_handler 后将停止执行。