>백엔드 개발 >PHP 튜토리얼 >PHP 오류 처리 메커니즘 예제에 대한 자세한 설명

PHP 오류 처리 메커니즘 예제에 대한 자세한 설명

怪我咯
怪我咯원래의
2017-07-07 10:21:161183검색

이 글은 주로 PHP 오류 처리 메커니즘에 대한 정보를 소개합니다. 매우 상세하고 실용적입니다. 필요한 친구가 참고할 수 있습니다.

일상적인 프로젝트 개발 과정에서 예상치 못한 예외 오류가 항상 발생합니다. 우리가 이것을 상대적으로 잘 처리하지 않으면 프로그램이 매우 비전문적으로 보일 것이며 다른 사람들이 시스템을 공격하는 데 효과적인 정보가 될 가능성이 있습니다. 일부 오류 예외는 스크립트 실행을 종료할 것이며, 이때 오류 메시지가 없다면 그러면 프로젝트에 수백 또는 수천 줄의 코드가 있다는 것이 얼마나 무서운 일인지 알아야 합니다. 그렇다면 프로젝트 개발 과정에서 어떻게 빠르고 정확하게 이상 징후를 찾아낼 수 있을까요? 이 글은 오류에 대한 나만의 이해와 예외 처리를 바탕으로 작성되었으며, 모두가 함께 배우고 소통할 수 있도록 공유하며 메모의 역할을 하게 됩니다.

시스템 오류 처리기:

PHP 정상적인 상황에서는 오류가 정상적으로 출력되지만 일부 프레임워크에서는 오류 출력에 영향을 미칠 수 있습니다. 프레임워크 자체에 자체 처리 메커니즘이 있거나 오류가 있을 수 있습니다. 일반적으로 다음과 같은 함수 설정이 처리됩니다.

1.error_reporting(); PHP의 오류 보고 수준을 설정하고 현재 수준을 반환합니다.

error_reporting(report_level)

매개변수 수준이 지정되지 않은 경우 현재 오류 보고 수준이 반환됩니다. 다음 항목은 가능한 레벨 값입니다.

64과 같습니다.1024 함수

상수

설명

1

E_ERROR

치명적인 런타임 오류. 이 오류는 재활용할 수 없습니다. 스크립트 실행이 중단되었습니다. 🎜

2

E_WARNING

치명적이지 않은 런타임 경고. 스크립트 실행이 중단되지 않습니다.

4

E_PARSE

컴파일 시간 분석 오류입니다. 분석기는 분석기에서 생성된 오류

8

E_NOTICE

에 대해서만 런타임에 알림을 받아야 합니다. 발견된 스크립트는 버그일 수 있지만 일반적으로 스크립트를 실행할 때 발생할 수 있습니다.

16

E_CORE_ERROR

PHP시작할 때 치명적인 오류가 발생했습니다. 이는 PHP 시간 경고의 E_ERROR

32

E_CORE_WARNING

과 같습니다. 이것은 PHP의 핵심에 있는 E_WARNING

E_COMPILE_ERROR

치명적인 컴파일 타임 오류가 발생했습니다. 이는 Zend스크립트 엔진에서 생성된 E_ERROR

128

E_COMPILE_WARNING

치명적이지 않은 컴파일 시간 경고를 전달하는 것과 같습니다. 이는 Zend 스크립팅 엔진이 E_WARNING

256

E_USER_ERROR

을 생성하는 것과 유사하며, 프로그래머가 PHP를 사용하는 방식과 유사합니다. ction trigger_error() set E_ERROR

512

E_USER_WARNING

프로그래머가 PHP 함수 trigger_error E_WARNING 을 사용하여 설정한 것과 유사한 치명적이지 않은 사용자 생성 경고입니다.

E_USER_NOTICE

사용자 생성 알림은 프로그래머가 PHP

trigger_error 2048E_STRICT을 사용하여 설정하는 것과 유사합니다.

런타임 알림. PHP이 코드의 상호 운용성과 호환성을 돕기 위해 코드를 변경하는 것이 좋습니다

4096

E_RECOVERABLE_ERROR

캐치 가능한 치명적인 오류 E_ERROR , 하지만 잡힐 수도 있어요 사용자 정의 핸들러별(set_error_handler() 참조)

8191

E_ALL

레벨 E_을 제외한 모든 오류 및 경고 STRICT (PHP6.0에서 , E_STRICTE_ALL)

의 일부가 됩니다.

여기서 $level이 0이면 오류 출력이 꺼진다는 점, 즉 오류가 출력되지 않는다는 점에 주목할 가치가 있습니다.

2.set_error_handler()

정의 및 사용법

set_error_handler() 함수는 사용자 정의 오류 처리 기능을 설정합니다.

런타임 중 사용자 고유의 오류 처리 방법을 생성하는 데 사용되는 함수입니다.

이 함수는 이전 오류 처리기를 반환하거나, 실패하면 null을 반환합니다.

Syntax

set_error_handler(error_function,error_types)

Parameters

Description

error_function

필수입니다. 오류가 발생할 때 실행할 함수를 지정합니다.

error_types

선택사항. 사용자 정의 오류가 표시될 오류 보고 수준을 지정합니다. 기본값은 "E_ALL"입니다.

팁: 이 함수를 사용하면 표준 PHP 오류 처리 기능이 완전히 우회됩니다. 필요한 경우 사용자 정의 오류 처리기가 스크립트를 종료(die())해야 합니다.

참고: 스크립트 이전에 오류가 발생하는 경우. 가 실행되면 해당 시점에는 사용자 정의 프로그램이 등록되지 않았으므로 사용자 정의 오류 핸들러는 사용되지 않습니다.

테스트 코드는 다음과 같습니다.

/**
 *
 * @param type $error_level 错误级别
 * @param type $error_message    错误信息
 * @param type $error_file 可选 错误文件
 * @param type $error_line 可选 错误行
 * @param type $error_context 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。
 */
function my_error($error_level, $error_message, $error_file, $error_line, $error_context) {
  echo date('Y-m-d H:i:s') . $error_level . $error_message . $error_file . $error_line;
  var_dump($error_context);
}
set_error_handler('my_error', E_ALL);
print_r($a);

//my_error 메소드를 등록하면 시스템이 원래 오류 처리 error_fuction() 메소드를 자동으로 덮어쓰는 것을 위의 사례에서 알 수 있습니다.
위 프로그램 실행 결과:

오류를 정의하면

정의 및 사용법

trigger_error() 함수가 사용자 정의 오류 메시지를 생성합니다.

trigger_error()는 사용자가 지정한 조건에서 오류 메시지를 트리거하는 데 사용됩니다. 내장된 오류 핸들러와 함께 사용되며, set_error_handler() 함수로 생성된 사용자 정의 함수와도 사용할 수 있습니다. 잘못된 오류 유형이 지정되면 이 함수는 false를 반환하고, 그렇지 않으면 true를 반환합니다.

Syntax

trigger_error(error_message,error_types)

ParametersDescriptionerror_message필수입니다. 오류 메시지를 지정합니다. 길이 제한은 error_types

1024

자입니다.

可选。规定错误消息的错误类型。 可能的值:

  • E_USER_ERROR

  • E_USER_WARNING

  • E_USER_NOTICE

测试代码如下:

/**
 *
 * @param type $level
 * @param type $msg
 */
function my_error($level, $msg) {
  switch ($level) {
  case E_USER_ERROR:
    echo "ERROR:<br/>";
    break;
  case E_USER_WARNING:
    echo "WARNING:<br/>";
    break;
  case E_USER_NOTICE:
    echo "NOTICE:<br/>";
    break;
  default:
    break;
  }
  echo "错误编号:" . $level . " <br/>";
  echo "错误信息:" . $msg;
}
//注册错误处理器
set_error_handler(&#39;my_error&#39;);
if (89 > 8) {
  //调用错误触发器
  trigger_error(&#39;这是错误啊&#39;, E_USER_WARNING);
}

运行结果如下:

WARNING:
错误编号:512
错误信息:这是错误啊

위 내용은 PHP 오류 처리 메커니즘 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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