企业网站开发职责,怎么在公司网站做超链接,钢结构人才网,建筑钢材价格网错误类型PHP 主要有两种错误#xff1a;触发错误和异常。其中触发错误大概可以分为#xff1a;编译错误、引擎错误和运行时错误#xff0c;其中前两个是无法捕获的#xff1b;异常都是可以捕获的#xff0c;当没有尝试捕获时则会中断代码。触发错误可以通过 error_get_las…错误类型PHP 主要有两种错误触发错误和异常。其中触发错误大概可以分为编译错误、引擎错误和运行时错误其中前两个是无法捕获的异常都是可以捕获的当没有尝试捕获时则会中断代码。触发错误可以通过 error_get_last() 来进行获得异常可以使用标准的 try...catch 语句来捕获。处理方式【错误报告】error_reporting() 函数是 PHP 提供的一个控制错误等级的函数如果设置了对应的错误等级则只会在对应错误等级触发时才会在页面(或输出对于命令行来说)输出响应的错误信息。error_reporting(int level) 支持等级 level 参数使用二进制的数字来配置错误等级错误等级一般用常量来代替对应的二进制标识。例如E_ALL、E_NOTICE、 E_USER_NOTICE 等等如果不传递参数则会返回当前的错误等级(一般用来保存当前的错误等级以供后续恢复)。其中 E_PARSE、E_COMPILE_* 和 E_CORE_* 是非运行时错误无法被捕获的【php.ini】配置文件是 PHP 初始化的默认配置通过修改某些参数可以控制对应的初始化参数。如果要控制错误可以通过以下几个方式来配置display_errors - 是否显示错误一般在生产环境建议关闭该参数并和下列的参数一起试用 log_errors - 记录错误开关如果打开会记录到对应位置 error_log - 记录错误日志的位置不指定为系统默认 error_reporting - 同上面的函数【错误抑制】PHP 提供了一种特殊的操作通过在语句前面加上抑制错误操作符来抑制该语句出现错误。这种情况通常用于你不知道会发生什么情况下使用比如打开了不确定的文件或者网络 URL但一般不推荐使用抑制错误本身内部做了一系列的处理才达到该效果并且对于错误本身完全是未知的一般情况下不建议这么使用【捕获异常】几乎在所有语言中都会有对于异常的处理。如果程序抛出一个异常那么可以通过 try…catch 语句来捕获该异常如果明确知道错误的类型也可以只捕获该类型的错误。try…catch 是一种最标准的错误处理方式。try {// 代码部分} catch (Exception $e) {// 根据异常对象对 $e 进行处理}【设置错误处理器】PHP 提供了 set_error_handler() 函数来让开发者传入一个函数名(或匿名函数对于 5.2 以上的 PHP)就可以让所有的错误进入该函数然后开发者可以在函数内进行控制举例说明set_error_handler(function($code, $msg){log_error($msg occur with code $code);});对应地PHP 也提供了 restore_error_handler() 来恢复为标准的 PHP 错误控制。【设置异常处理器】如果每个异常都去捕获显然是很复杂的事情需要编写很多代码而且维护起来会比较复杂对于一个快速编程的语言来说PHP 自然不会允许发生这种事情。使用 set_exception_handler() 就可以像上面错误处理控制器一样接收所有未捕获的异常然后做一些该做的事情甚至还可以再把错误抛出来。例如set_exception_handler(function($exception){log_error(Exception occur: $exception);});【崩溃捕获】该类处理并非 PHP 标准的处理方式但对于某种使程序崩溃的无法捕获的错误确实很有用它是指注册一个 shutdown 函数在函数内通过调用 error_get_last() 来获取最后的错误并且根据错误等级来做相应的处理。register_shutdown_function(function(){$error error_get_last();if ($error $error[code]()() error_reporting()) {// 崩溃错误记录日志}});