PHP 오류 처리 메커니즘

일상적인 프로젝트 개발 과정 에서 우리 가 예상 치 못 한 이상 한 오류 가 발생 할 수 있다.만약 에 우리 가 이에 대해 상대 적 으로 완선 한 처 리 를 하지 않 으 면 절차 도 전문 적 이지 않 고 다른 사람 이 시스템 을 공격 하 는 효과 적 인 정보 가 될 수 있다.일부 오류 이상 은 스 크 립 트 실행 을 중지 합 니 다.이 럴 때 오류 알림 정보 가 없 으 면 우 리 는 처음부터 코드 를 볼 수 밖 에 없습니다.프로젝트 의 수백 수천 줄 에 달 하 는 코드 가 우리 에 게 얼마나 무 서운 일 인지 알 아야 합 니 다.그러면 우 리 는 프로젝트 개발 과정 에서 이상,오 류 를 신속하게 찾 고 해당 하 는 처 리 를 하 는 방법 을 알 아야 합 니 다.본 고 는 자신 이 잘못,이상 처리 에 대한 이 해 를 바탕 으로 여러분 과 서로 학습 하고 교류 하 며 메모 로 삼 는 다.
시스템 오류 프로세서:
PHP 의 정상 적 인 상황 에서 오 류 는 정상적으로 출력 되 지만 일부 프레임 워 크 에서 잘못된 출력 에 영향 을 줄 수 있 습 니 다.프레임 워 크 자체 에 자신의 처리 체제 가 있 을 수도 있 고 코드 에서 처리 할 수도 있 습 니 다.보통 이 몇 가지 함수 설정 입 니 다.
1.error_reporting();  PHP 오류 단 계 를 설정 하고 현재 단 계 를 되 돌려 줍 니 다.
  error_reporting(report_level)
인자 level 이 지정 되 지 않 으 면 현재 오류 단 계 를 되 돌려 줍 니 다.다음 몇 가 지 는 level 가능 한 값 입 니 다:
값.
상수
묘사 하 다.
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 시작 시 경고 합 니 다.이것 은 PHP 의 핵심 에 있 는 E 와 같다.WARNING
64
E_COMPILE_ERROR
치 명 적 인 컴 파일 오류.Zend 스 크 립 트 엔진 을 통 해 만들어 진 E 와 같 습 니 다.ERROR
128
E_COMPILE_WARNING
비치 명 컴 파일 시 경고.이것 은 마치 Zend 스 크 립 트 엔진 을 통 해 E 를 생 성 하 는 것 과 같다.WARNING
256
E_USER_ERROR
치 명 적 인 사용자 생 성 오류 입 니 다.이것 은 프로그래머 가 PHP 함 수 를 사용 하 는 것 과 유사 합 니 다. trigger_error() 설치했어 E_ERROR
512
E_USER_WARNING
치 명 적 이지 않 은 사용자 가 만 든 경고 입 니 다.이것 은 프로그래머 가 PHP 함 수 를 사용 하 는 것 과 유사 합 니 다. trigger_error 설치했어 E_WARNING
1024
E_USER_NOTICE
사용자 가 만 든 알림 입 니 다.이것 은 프로그래머 가 PHP 함수 trigger 를 사용 하 는 것 과 유사 합 니 다.error 설치했어 E_NOTICE
2048
E_STRICT
런 타임 알림.PHP 는 코드 의 상호 작용 성과 호환성 을 돕 기 위해 코드 를 바 꾸 는 것 을 권장 합 니 다.
4096
E_RECOVERABLE_ERROR
포획 가능 한 치 명 적 오류,유사 E_ERROR,사용자 정의 프로세서 캡 처 가능(참조) set_error_handler())
8191
E_ALL
모든 오류 와 경고,레벨 E 를 제외 한STRCT(PHP 6.0 에서 ESTRCT 는 E모든 부분
여기 서 주의해 야 할 것 은$level 이 0 일 때 오류 출력 을 닫 습 니 다.즉,어떠한 오류 도 출력 하지 않 습 니 다.
2.set_error_handler()
정의 와 용법
set_error_handler()함수 가 사용자 정의 오류 처리 함 수 를 설정 합 니 다.
이 함 수 는 실행 중인 사용자 의 오류 처리 방법 을 만 드 는 데 사 용 됩 니 다.
이 함 수 는 오래된 오류 처리 프로그램 을 되 돌려 줍 니 다.실패 하면 null 로 돌아 갑 니 다.
문법
set_error_handler(error_function,error_types)
매개 변수
묘사 하 다.
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()는 사용자 가 지정 한 조건 에서 오류 메 시 지 를 실행 하 는 데 사 용 됩 니 다.내 장 된 오류 프로세서 와 함께 사용 할 수도 있 고 seterror_handler()함수 가 만 든 사용자 정의 함수 사용.
합 법 적 이지 않 은 오류 형식 을 지정 하면 이 함 수 는 false 로 돌아 갑 니 다.그렇지 않 으 면 true 로 돌아 갑 니 다.
문법
trigger_error(error_message,error_types)
매개 변수
묘사 하 다.
error_message
필수잘못된 소식 을 규정 하 다.길이 제한 1024 문자
error_types
선택 할 수 있다.오류 메시지 의 오류 유형 을 규정 합 니 다. 가능 한 값:
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('my_error');
if (89 > 8) {
  //       
  trigger_error('     ', E_USER_WARNING);
}
실행 결 과 는 다음 과 같 습 니 다.
WARNING:
오류 번호:512
오류 메시지:오류 입 니 다.
이상 에서 말 한 것 이 바로 본문의 전체 내용 이 니 여러분 들 이 좋아 하 시 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기