2011-01-15 1 views
0

나는 오류 제어 설정하기 위해 다음과 같은 기능을 사용set_error_handler & set_exception_handler

오류가 발생
set_error_handler 
set_exception_handler 

, 그것은 이전에 일반 페이지로 사용자를 리디렉션 데이터베이스에 오류 저장을 캡처이 함수를 호출을

function log_error($exception) 
{ 
    if(is_object($exception)) 
    log_action(ERROR, "Exception with message " . $exception->getMessage() . " thrown in " . $exception->getFile() . " on line " . $exception->getLine(), base_url() . $_SERVER["REQUEST_URI"]); 
    else 
    log_action(ERROR, "Unable to catch exception. print out: " . print_r($exception, true), base_url() . $_SERVER["REQUEST_URI"]); 

    header("Location: " . base_url() . "public_error_notification"); 
} 

이 기능은 일반적으로 오류 개체를 가져 오는 대신 많은 시간을 제외하고 작동합니다. 단지 숫자 만 얻습니다. 내가 항상 얻는 두 개의 숫자는 8과 2입니다. 제 오류 로그에서 그 숫자를 설명 할 수 있습니다. 내 질문은,이 숫자들은 무엇을 의미합니까? 내가 파일을 찾았을 때, 파일에 대한 에러 코드가 있었기 때문에 이해가되었지만, 지금은 에러가 파일과는 아무런 관계가 없다. 나는 그들이 오류 코드라고 가정하고 반환 될 수있는 오류 코드 목록을 얻을 수있는 방법이 있습니까?

답변

2

동일한 유형의 인수를 전달하지 않는 예외 처리기와 오류 처리기 모두에 대해 동일한 콜백을 사용하고있는 것 같습니다.

doc_set_error_handler를 살펴보면 첫 번째 인수는 오류 코드이고 두 번째는 오류 문자열입니다. 오류 코드는이 검사에 대한 개체가

http://ca2.php.net/set_error_handler

을 통과하지 :

http://ca2.php.net/manual/en/errorfunc.constants.php

+0

완벽! 나는 그 기능을 잘못 읽었다. 감사. – JohnathanKong

2

error_handler 콜백이 서명 함수를 취

handler (int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]]) 

첫번째 인수가 오류 번호이고, 두 번째는 오류를 기술하는 문자열이다. 최초의 유일한 인자가 발생 예외의 상세를 포함하는 객체가

handler (object $exception) 

:

한편 exception_handler이 서명 기능을 갖는다.

문제는 예외 및 오류에 동일한 콜백 서명이없는 것입니다. 예외를 적절히 다루는 동안 부적절한 콜백을 사용하여 오류를 처리합니다.

82과 같은 숫자가 표시되면 예외 객체를 볼 때 예외가 발생하는 경우 예외가 발생합니다.

1

난 그냥 당신이 얻을 수는 제기 된 오류의 수준이라고 추가 할 것입니다, contants이있다 E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE와 같은 PHP에서 정의되어 있습니다.

관련 문제