PHP에서는 "set_error_handler()" 함수를 통해 오류 처리를 사용자 정의할 수 있습니다. 이 함수의 기능은 "set_error_handler(callable $error_handler...)와 같은 다른 함수를 지정하는 것입니다. ".
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP에서 오류 프롬프트를 사용자 정의하는 방법
PHP set_error_handler()
: 사용자 정의 오류 처리 기능
PHP는 set_error_handler를 제공합니다. () 함수, 이 함수를 사용하면 오류 처리 함수로 다른 함수를 지정할 수 있습니다. 구문은 다음과 같습니다.
set_error_handler(callable $error_handler [, int $error_types = E_ALL | E_STRICT ])
매개변수 설명
1) $error_handler는 사용자 정의 함수 이름에 추가로 전달됩니다. 함수 이름에는 NULL을 전달할 수도 있습니다. 핸들러를 기본 상태로 재설정하려면 참조 개체 및 개체 메서드 이름의 배열을 전달할 수도 있습니다.
사용자 정의 함수의 형식은 다음과 같습니다.
error_handler(int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]])
그 중:
첫 번째 매개 변수 $errno는 오류 수준을 나타내며 정수 유형입니다.
두 번째 매개 변수 $errstr은 오류 정보를 나타냅니다.
세 번째 매개변수 $errfile은 오류가 발생한 파일 이름을 나타내는 선택적 매개변수이며 문자열 유형입니다.
네 번째 매개변수 $errline도 행 번호를 나타내는 선택적 매개변수입니다. 오류가 발생한 위치는 정수 유형입니다.
5번째 매개변수인 $errcontext는 오류가 발생할 때 활성 기호 테이블의 배열을 나타내는 선택적 매개변수이기도 합니다(PHP7.2.0 이후에는 사용되지 않음). 즉, $errcontext에는 오류가 발생한 범위의 모든 변수 배열이 포함됩니다. 사용자의 오류 처리기는 오류 컨텍스트를 수정해서는 안 됩니다.
참고: set_error_handler() 함수가 FALSE를 반환하면 표준 오류 처리기가 계속 호출됩니다.
2) $error_types 매개변수는 오류 표시를 제어할 수 있는 php.ini 구성 파일의 error_reporting과 같습니다. 이 매개변수는 $error_handler의 트리거를 차단하는 데 사용할 수 있습니다. 이 마스크가 없으면 $error_reporting 설정 방법에 관계없이 모든 오류에 대해 $error_handler가 호출됩니다.
이전에 오류 핸들러가 정의된 경우 프로그램 이름이 반환되고, 내장된 오류 핸들러인 경우 NULL이 반환됩니다. 잘못된 콜백 함수를 지정하면 NULL도 반환됩니다. 이전 오류 처리기가 클래스 메서드인 경우 이 함수는 클래스 및 메서드 이름이 포함된 인덱스 배열을 반환합니다.
【예시】오류 처리 기능을 사용자 정의하고 이를 사용하여 프로그램의 오류를 처리합니다.
<?php function error_handler($errno, $errstr, $errfile, $errline ) { echo "error number:".$errno."<br/>"; echo "error msg:".$errstr."<br/>"; echo "error file:".$errfile."<br/>"; echo "error line:".$errline."<br/>"; die('something error'); } set_error_handler("error_handler"); strpos(); ?>
실행 결과는 다음과 같습니다.
error number:2 error msg:strpos() expects at least 2 parameters, 0 given error file:D:\WWW\index.php error line:10 something error
참고: 오류 처리 기능에서 프로그램 실행이 종료되지 않으면 프로그램은 오류가 발생한 다음 줄을 계속 실행합니다. 이므로 프로그램을 종료하려면 die() 함수를 사용해야 합니다.
또한 이 오류 처리 방법은 프로그램 오류의 모든 수준을 처리할 수는 없습니다. E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING 및 E_STRICT 섹션의 오류는 원래 형식으로 표시됩니다.
set_error_handler() 고급
PHP의 예외 처리 메커니즘은 완벽하지 않으며 자동으로 예외를 발생시킬 수 없습니다. 사용자는 또한 set_error_handler()를 사용하여 예외를 오류로 처리할 수 있으므로 사용자는 사용자 정의 오류를 사용할 수 있습니다. 핸들러 기능은 자동으로 예외를 포착합니다.
【예시】사용자 정의 오류 처리 기능을 사용하여 예외를 자동으로 포착합니다.
<?php function error_handler($errno, $errstr, $errfile, $errline ) { echo "error number:".$errno."<br/>"; echo "error msg:".$errstr."<br/>"; echo "error file:".$errfile."<br/>"; echo "error line:".$errline."<br/>"; die('something error'); } set_error_handler("error_handler"); /* 触发异常 */ try { $a = 5/0; echo $a; } catch(Exception $e) { echo $e->getMessage(); } ?>
실행 결과는 다음과 같습니다.
error number:2 error msg:Division by zero error file:D:\WWW\index.php error line:12 something error
프로그램이 12행의 $a = 5/0; 문으로 실행되면 프로그램은 자동으로 이 예외를 포착하고 사용자 정의 함수로 처리합니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP에서 오류 프롬프트를 사용자 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!