不同的语言,异常和错误不同。在其他语言中的异常很多在PHP中属于错误,不能被自动抛出。所以要手动抛出,但这时候会感觉很鸡肋。but,有set_error_handler()、register_shutdown_function()两大结合可以捕捉所有类型错误的方法(set_exception_handler()捕捉异常的方法)
错误触发器:trigger_error();
错误和异常可以结合用,(本来PHP中大多数也是属于错误),触发错误捕获错误,捕获后抛出异常,捕获异常。这就相当于其他语言的自动捕获异常了
###
为什么register_shutdown_function()不能触发,为什么框架中是可以的?其实原因很简单,只在parse-time出错时是不会调用本函数的。只有在run-time出错的时候,才会调用本函数,我的理解是语法检查器前没有执行register_shutdown_function()去把需要注册的函数放到调用的堆栈中,所以就根本不会运行。那框架中为什么任何错误都能进入到register_shutdown_function()中呢,其实在框架中一般会有统一的入口index.php,然后每个类库文件都会通过include ** 的方式加载到index.php中,相当与所有的程序都会在index.php中聚集,同样,你写的具有语法错误的文件也会被引入到入口文件中,这样的话,调用框架,执行index.php,index.php本身并没有语法错误,也就不会产生parse-time错误,而是 include 文件出错了,是run-time的时候出错了,所以框架执行完之后就会触发register_shutdown_function();
https://www.cnblogs.com/zyf-zhaoyafei/p/6928149.html
###
https://blog.csdn.net/the_victory/article/details/51481941
错误不仅可以指定记录错误报告日志,PHP还可以记录错误到操作系统(Linux和Windows都可以)