English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
set_error_handler() 함수는 사용자 정의된 에러 처리 함수를 설정합니다.
mixed set_error_handler(callback $error_handler[, int $error_types]);
스크립트에서 발생하는 에러를 처리하기 위해 사용자의 함수(error_handler)를 설정합니다.
이 함수는 실행 중의 에러를 사용자 정의 방식으로 처리할 수 있습니다. 예를 들어, 애플리케이션에서 심각한 에러가 발생하거나 특정 조건에서 에러가 발생하면(trigger_error() 사용), 데이터를 처리해야 합니다./파일을 정리하고 회수합니다.
중요하게는 error_types에서 지정한 모든 에러 유형은 FALSE를 반환하지 않는 한 PHP 표준 에러 처리 프로그램을 뛰어넘습니다. error_reporting() 설정은 작용하지 않으며 여전히 에러 처리 함수가 호출됩니다. - 그러나 error_reporting의 현재 값을 얻고 적절한 처리를 할 수 있습니다. 특히 @ error를 포함한 에러를 주의하세요.-control operator 접두사를 가진 문장에서 에러가 발생하면 이 값은 0입니다.
그리고 필요할 때는 die()를 사용해야 합니다. 에러 처리 프로그램이 반환되면 스크립트는 에러가 발생한 후의 다음 줄에서 계속 실행됩니다.
사용자 정의된 함수로 처리할 수 없는 에러 수준은 E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, 그리고 set_error_handler() 함수 호출 파일에서 발생하는 대부분의 E_STRICT입니다.
스크립트 실행 전에(예: 파일 업로드 시) 에러가 발생하면, 그때까지 등록되지 않았기 때문에 사용자 정의된 에러 처리 프로그램이 호출되지 않습니다.
순번 | 파라미터 및 설명 |
---|---|
1 | error_handler(필수) 에러가 발생할 때 실행할 함수를 지정합니다. 아래는 error_handler의 문법입니다. |
2 | error_types(선택) 사용자 정의된 에러가 어느 에러 보고 수준에서 표시될지 지정합니다. 기본 값은 'E_ALL'입니다. 가능한 에러 보고 수준에 대한 정보는 'PHP 에러 및 로그 기록 상수:'를 참조하세요. |
error_function(error_level, error_message, error_file, error_line, error_context);
이는 paramenter의 설명입니다-
errno - 第一个参数 errno,包含了错误的级别,是一个 integer。
errstr - 第二个参数 errstr,包含了错误的信息,是一个 string。
errfile - 第三个参数是可选的,errfile, 包含了发生错误的文件名,是一个 string。
errline - 第四个参数是一个可选项, errline, 包含了错误发生的行号,是一个 integer。
errcontext - 第五个可选参数, errcontext, 是一个指向错误发生时活动符号表的 array。 也就是说,errcontext 会包含错误触发处作用域内所有变量的数组。 用户的错误处理程序不应该修改错误上下文(context)。
如果之前有定义过错误处理程序,则返回该程序名称的 string;如果是内置的错误处理程序,则返回 NULL。 如果你指定了一个无效的回调函数,同样会返回 NULL。 如果之前的错误处理程序是一个类的方法,此函数会返回一个带类和方法名的索引数组(indexed array)。
以下是此set_error_handler函数的用法:
<?php function customError($errno, $errstr, $errfile, $errline) { echo "Custom error: [$errno] $errstr\n"; echo "Error on line $errline in $errfile\n"; echo "Ending Script"; die(); } //设置错误处理程序 set_error_handler("customError"); $test = 0; //触发错误 if ($test > -1) { trigger_error("已触发自定义错误"); } ?>测试看看‹/›
输出结果:
Custom error: [1024] A custom error has been triggered Error on line 16 in /home/cg/root/1531703/main.php Ending Script