PHP의 오류 처리에 대한 자세한 설명
오류 보고
PHP 프로그램의 오류는 일반적으로 다음 세 가지 영역에 속합니다.
1. 구문 오류
구문 오류는 가장 일반적이고 쉽습니다. 고치다. 예: 코드에 세미콜론이 없습니다. 이러한 유형의 오류는 스크립트 실행을 방해합니다
2. 런타임 오류
이 유형의 오류는 일반적으로 PHP 스크립트의 실행을 방해하지 않지만 현재 수행 중인 작업을 방해합니다. 오류가 출력되는데 php 스크립트는 계속 실행됩니다
3. 논리 오류
이런 종류의 오류는 스크립트 실행을 방해하지도 않고 오류 메시지를 출력하지도 않습니다
[참고] php.ini 구성 파일의 Display_errors가 기본값인 on에서 off로 설정되어 있으면 오류가 표시되지 않습니다.[注意]若将php.ini配置文件中的display_errors从默认的on设置为off,将不显示任何错误
在PHP脚本中可调用ini_set()函数,动态设置php.ini配置文件
ini_set("display_errors","On"); //显示所有错误信息
错误级别
实际上,表格中的13个错误类型可以分为3类:注意级别、警告级别和错误级别。一般地,在开发过程中,忽略注意级别的错误
"; getType();//未传入参数,警告级别 echo "222222222222222222222
"; getType3();//函数名错误,错误级别 echo "333333333333333333333
"; ?>
错误处理
1、第一种错误处理方法是修改配置文件
错误级别默认为提示所有级别的错误:error_reporting = E_ALL
把error_reporting = E_ALL
改为error_reporting = E_ALL & ~E_NOTICE
表示不提示注意级别的错误。然后,重启服务生效
error_reporting = E_ALL & ~E_NOTICE
抛出任何非注意的错误,默认值error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR
只考虑致命的运行时错误、新解析错误和核心错误error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE)
报告除用户导致的错误之外的所有错误
2、第二种错误处理方法是使用错误处理函数
在PHP脚本可以通过error_reporting( )函数动态设置错误报告级别
"; getType();//警告级别 echo "222222222222222222222
"; getType3();//错误级别 echo "333333333333333333333
";?>
自定义错误处理
自定义错误报告的处理方式,可以完全绕过标准的PHP错误处理函数,这样就可以按自己定义的格式打印错误报告,或改变错误报告打印的位置,以下几种情况可以考虑自定义错误处理:1、记下错误的信息,及时发现一些生产环境出现的问题;2、屏蔽错误;3、控制错误的输出; 4、作为调试工具
使用set_error_handler()函数来设置用户自定义错误处理
{$error_message}, 在文件{$error_file}中, 第{$error_line}行。
"; } getType($a); echo "1111111111111111
"; getType(); echo "222222222222222222222
"; echo "--------------------------------------------
"; echo $mess; ?>
错误日志
一般地,程序都会保存错误日志,用来记录程序运行时的错误信息。且错误日志都有其默认的存储位置。对于错误信息和错误日志的位置,我们都可以进行修改
在PHP.ini配置文件中,有以下几项可以对错误日志进行设置
error_reporting = E_ALL
//将向PHP发送每个错误display_errors=Off
//不显示错误报告log_errors=On //决定日志语句记录的位置
log_errors_max_log=1024
//每个日志项的最大长度error_log=G:/myerror.log
PHP 스크립트에서 ini_set() 함수를 호출하여 동적으로 설정할 수 있습니다. php.ini 구성 파일
< code> ini_set("display_errors","On"); //모든 오류 메시지 표시
오류 수준 사실 13가지 오류 유형은 표는 주의 수준, 경고 수준, 오류 수준의 3가지 범주로 나눌 수 있습니다. 일반적으로 개발 중에는 주의 수준 오류를 무시하세요error_reporting = E_ALL< /code> error_reporting = E_ALL
를
error_reporting = E_ALL & ~E_NOTICE
로 변경하여 주의 수준 오류가 표시되지 않음을 나타냅니다. 그런 다음 서비스를 다시 시작하면 적용됩니다.
error_reporting = E_ALL & ~E_NOTICE
눈에 띄지 않는 오류가 발생하면 기본값
error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR
은 치명적인 런타임만 고려합니다. , 새로운 구문 분석 오류 및 핵심 오류
error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE)
사용자로 인한 오류를 제외한 모든 오류 보고
2. 두 번째 오류 처리 방법은 오류 처리 기능을 사용하는 것입니다 PHP 스크립트에서는 error_reporting() 함수를 통해 오류 보고 수준을 동적으로 설정할 수 있습니다.
getMessage()." "; //输出捕获的异常消息 } echo 'Hello World'; //程序没有崩溃继续向下执行?>
로그인 후 복사
로그인 후 복사
사용자 정의 오류 처리 표준 PHP 오류 처리 기능을 완전히 우회할 수 있는 오류 보고서 처리 방식을 사용자 정의하여 다음과 같이 정의할 수 있습니다. 오류 보고서를 해당 형식으로 인쇄하거나 오류 보고서가 인쇄되는 위치를 변경하십시오. 다음 상황에서는 오류 처리 사용자 정의를 고려할 수 있습니다. 1. 오류 정보를 기록하고 생산 환경의 일부 문제를 적시에 발견합니다. 2. 오류 보호 3. 오류 출력 제어 4. 디버깅 도구로 set_error_handler() 함수를 사용하여 사용자 정의 오류 처리를 설정하세요
로그인 후 복사
로그인 후 복사
오류 로그 오류 로그는 프로그램이 실행되는 동안 발생한 오류를 기록합니다. 그리고 오류 로그에는 기본 저장 위치가 있습니다. 오류 정보와 오류 로그의 위치를 수정할 수 있습니다PHP.ini 구성 파일에서 오류 로그에 설정할 수 있는 항목은 다음과 같습니다
error_reporting = E_ALL
//됩니다. PHP로 전달되어 각 오류를 보냅니다.
display_errors=Off
//오류 표시 안함 보고서
log_errors=On //로그 문 기록 위치 확인
log_errors_max_log=1024< /code> / /각 로그 항목의 최대 길이error_log=G:/myerror.log
//오류가 기록되는 파일을 지정합니다 php 파일에서 다음 함수를 사용할 수 있습니다. 오류 메시지를 사용자 정의하기 위한 error_log()
code."]:".$this->message."
"; } public function customFunction() { //为这个异常自定义一个处理方法 echo "按自定义的方法处理出现的这个类型的异常
"; } }?>
로그인 후 복사
로그인 후 복사
예외 처리 예외 처리는 지정된 오류가 발생할 때 스크립트의 일반적인 흐름을 변경하는 데 사용됩니다. 이는 PHP5의 새로운 중요한 기능입니다. 예외 처리는 확장 가능하고 유지 관리가 쉬운 오류 처리 메커니즘이며, 새로운 객체 지향 오류 처리 방법을 제공합니다
try{
使用try去包含可能会发生异常的代码
一旦出现异常try进行捕获异常,交给catch处理。
抛出异常语句:throw 异常对象。
}catch(异常对象参数){
在这里做异常处理。
}[catch(。,,){
.. .. ..
}]
getMessage()." "; //输出捕获的异常消息 } echo 'Hello World'; //程序没有崩溃继续向下执行?>
로그인 후 복사
로그인 후 복사
自定义异常
用户可以用自定义的异常处理类来扩展PHP内置的异常处理类。以下的代码说明了在内置的异常处理类中,哪些属性和方法在子类中是可访问和可继承的
로그인 후 복사
로그인 후 복사
[注意]如果使用自定义的类来扩展内置异常处理类,并且要重新定义构造函数的话,建议同时调用parent::__construct()来检查所有的变量是否已被赋值。当对象要输出字符串的时候,可以重载__toString() 并自定义输出的样式
code."]:".$this->message."
"; } public function customFunction() { //为这个异常自定义一个处理方法 echo "按自定义的方法处理出现的这个类型的异常
"; } }?>
로그인 후 복사
로그인 후 복사
customFunction(); //通过自定义的异常对象中的方法处理异常 } echo '你好呀'; //程序没有崩溃继续向下执行?>
로그인 후 복사
相关参考:php教程
위 내용은 PHP의 오류 처리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!