먼저 작성자의 PHP 버전은 7.2
평소 접하는 온난화와 주의사항은 모두 오류일 뿐, 수준이 다를 뿐입니다. 예:
TypeError(유형 오류) 내가 지정한 함수 매개변수 유형이 전달된 매개변수와 일치하지 않습니다.ArithmeticError(산술 오류)
ParseError(파싱 오류) 로드된 파일에 "demo.php"를 포함합니다. ”, 또는 eval()에 구문 오류가 있어 구문 분석이 실패합니다AssertionError(어설션 오류) 이 오류는 Assert가 적용될 때 발생합니다pisionByZeroError(분모는 0입니다) 나누기 등의 작업 중 분모는 0입니다
이를 제외하면 나머지는 모두 예외입니다.
이전 php5.Exception에서는 이 인터페이스를 구현했으며 try-catch에서 오류를 던질 수 있습니다
try{ …… }catch(Throwable $e){ …… }
구문 분석 오류
>치명적인 오류
> 완화
> 알림
>지원 중단됨
Deprecated 最低级别的错误(不推荐,不建议) 使用一些过期函数的时候会出现,程序继续执行 Notice 通知级别的错误 使用一些未定义变量、常量或者数组key没有加引号的时候会出现,程序继续执行 E_NOTICE // 运行时通知。表示脚本遇到可能会表现为错误的情况. E_USER_NOTICE // 用户产生的通知信息。Waning 警告级别的错误 程序出问题了,需要修改代码!!!程序继续执行 E_WARNING // 运行时警告 (非致命错误)。 E_CORE_WARNING // PHP初始化启动过程中发生的警告 (非致命错误) 。 E_COMPILE_WARNING // 编译警告 E_USER_WARNING // 用户产生的警告信息Fatal Error 错误级别的错误 程序直接报错,需要修改代码!!!中断程序执行,可使用register_shutdown_function()函数在程序终止前触发一个函数 E_ERROR // 致命的运行错误,错误无法恢复,暂停执行脚本 E_CORE_ERROR // PHP启动时初始化过程中的致命错误 E_COMPILE_ERROR // 编译时致命性错,就像由Zend脚本引擎生成了一个E_ERROR E_USER_ERROR // 自定义错误消息。像用PHP函数trigger_error(错误类型设置为:E_USER_ERROR)Parse error 语法解析错误 语法检查阶段报错,需要修改代码!!!中断程序执行,除了修改ini文件,将错误信息写到日志中,什么也做不了 E_PARSE //编译时的语法解析错误
set_error_handler()
함수를 제공합니다. 프로세스.
이 함수 이전 코드에서 오류가 발생하면 아직 등록되지 않았기 때문에 사용자 정의 처리 함수가 호출되지 않습니다.
이 함수를 설정한 후에는 error_reporting()이 유효하지 않습니다다음 수준의 오류는 호출할 수 없습니다. 사용자 정의 함수에서 사용됨: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING 이 함수는 경고 및 참고 수준 오류 중 일부만 잡을 수 있습니다
set_Exception_handler()<p> <code>Parse error
>Fatal Error
> Waning
> Notice
>Deprecated
举例 register_shutdown_function('shutdown');function shutdown(){ if ($error = error_get_last()) { var_dump($error); } }$name //没写 ; 号
自定义错误处理程序
有的时候,php 中自带的错误处理程序,并不能完全满足我们得需要,大部分时候,我们都需要手动重写异常处理。
php 给我们提供了三个函数来帮助我们来处理,分别是
set_error_handler()
set_exception_handler()
register_shutdown_function()
error_get_last()
它能获取最后发生的错误。执行结果 Parse error: syntax error, unexpected ';' in /app/swoole/errorDemo.php on line 34
잡히지 않는 예외 처리에 사용
register_shutdown_function()
Function: PHP가 종료될 때 실행될 함수를 등록
PHP 잡기 오류 : Fatal Error, Parse Error 등. 이 메소드는 PHP 스크립트 실행이 끝나기 전에 호출되는 마지막 함수입니다. 예를 들어 스크립트 오류, die(), 예외 및 정상 종료가 모두 호출됩니다. 오류 처리를 위해서는 마지막에 발생한 오류를 가져올 수 있는 error_get_last()
에 협조해야 합니다.
파싱 오류: 구문 오류, 예상치 못한 ';' in /app/swoole/errorDemo.php 34번째 줄
위 내용은 php7의 예외 및 오류 처리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!