还是非常好理解的吧,大部分的PHP框架都会有自定义异常的组件或者能力供我们使用,因为现代框架还是以面向对象为基础的,所以异常会定义的比较详细。不同组件会提供不同的异常类来进行异常的提示封装。
接下来就是 finally 关键字,其实这个并没有什么可多说的,finally 的特点就是不管有没有出现异常,都会去执行 finally 关键字所定义代码块内部的内容。
try { test2(); } catch (TestException $e) { echo $e, PHP_EOL; } finally { echo 'continue this code ...', PHP_EOL; } // code: 200; TestException:This is test2 Error... // continue this code ...
说了这么多,最后我们来结合上述内容来处理下除0错误的异常抛出。在文章开头已经说过,错误是应该避免的,而异常是属于逻辑业务的。所以当我们接到一个需要做除法的参数时,可以先判断这个数是否为0,如果是0的话,就抛出异常让上层调用者来处理,如果不是0的话,就让它正常进行除法运算就好了。
function test3($d) { if ($d == 0) { throw new Exception('除数不能为0'); } return 1 / $d; } try { echo test3(2), PHP_EOL; } catch (Exception $e) { echo 'Excepition:' . $e->getMessage(), PHP_EOL; } finally { echo 'finally:继续执行!', PHP_EOL; } // 0.5 // finally:继续执行! try { echo test3(0), PHP_EOL; } catch (Exception $e) { echo 'Excepition:' . $e->getMessage(), PHP_EOL; } finally { echo 'finally:继续执行!', PHP_EOL; } // Excepition:除数不能为0 // finally:继续执行!
总结异常相关的使用就是这些了,通过这两篇文章,相信大家已经对PHP的错误和异常有了一些直观的了解了。接下来的文章我们将一起对比下错误和异常,并且说明一下PHP7对错误有了哪些改进。内容依然精彩,值得期待哦!!