2010-03-27 4 views
5

런타임 중에 내 코드가 경고를 던진 것을 어떻게 알 수 있습니까? 난 내 코드를 처리 할 수없는 오류 : "0으로 나누기 경고"PHP에서 처리되지 않은 오류

예를

try { 
    echo (25/0); 
} catch (exception $exc) { 
    echo "exception catched"; 
} 

가 발생합니다.

답변

7

당신은 set_error_handler() 함수를 찾고 있습니다. http://ch.php.net/set_error_handler 설명서의 샘플 코드를 확인하십시오.

오류 경고를 표시하지 말고 경고 파일을 로그 파일 또는 이와 유사한 것으로 자동 리디렉션해야합니다. follows.e.g

function inverse($x) 
{ 
    if(!$x) 
    { 
     throw new Exception('Division by zero.'); 
    } 
    else 
    { 
     return 1/$x; 
    } 
} 


try 
{ 
    echo inverse(5); 
    echo inverse(0); 
} 
catch (Exception $e) 
{ 
    echo $e->getMessage(); 
} 
+0

@svens가 말한대로, 모든 오류를 끄기위한 오류 억제는'error_reporting (0)'으로 수행됩니다. http://us.php.net/manual/en/errorfunc.configuration을보십시오. php # ini.error-보고 –

+0

.. 또는 명령 앞에 '@'를 추가하십시오. Btw. error_reporting이 0으로 설정되면 (errno = 0과 함께) 오류 처리기가 호출됩니다. 오류 처리기는 매우 편리하며 시간, 매개 변수, 메모리 사용 등의 최종 로깅과 같은 작업을 수행하고 관리자에게 알릴 수 있습니다 (치명적인 오류의 경우). 나는 억압 오류를 추천하고 싶지 않습니다 :). – svens

5

(이것은 당신이 버그를 추적 할 수 있습니다). 예를 보시길 바랍니다 here

+0

예외가 어떻게 작동하는지 완전히 오해했습니다. – user187291

+0

@ stereofrog, 메모 주셔서 감사합니다. 명확하게하려고합니다. – Young

+0

예외의 목적은 오류가 발생하는 것을 "예방"하는 것이 아니라 오류가 발생할 때 처리하는 방법을 제공하는 것입니다. 아직도, 시도를 위해 +1. – user187291

2

당신은 예외로 이전 스타일의 PHP "오류"변환 오류 처리기를 설치할 필요가 같이 예외를 직접 처리 할 필요가

관련 문제