>  기사  >  백엔드 개발  >  PHP에서 오류 프롬프트를 사용자 정의하는 방법

PHP에서 오류 프롬프트를 사용자 정의하는 방법

藏色散人
藏色散人원래의
2021-06-02 15:38:281506검색

PHP에서는 "set_error_handler()" 함수를 통해 오류 처리를 사용자 정의할 수 있습니다. 이 함수의 기능은 "set_error_handler(callable $error_handler...)와 같은 다른 함수를 지정하는 것입니다. ".

PHP에서 오류 프롬프트를 사용자 정의하는 방법

이 문서의 운영 환경: 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(&#39;something error&#39;);
    }
    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(&#39;something error&#39;);
    }
    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.