런타임 중에 내 코드가 경고를 던진 것을 어떻게 알 수 있습니까? 난 내 코드를 처리 할 수없는 오류 : "0으로 나누기 경고"PHP에서 처리되지 않은 오류
예를
try {
echo (25/0);
} catch (exception $exc) {
echo "exception catched";
}
가 발생합니다.
런타임 중에 내 코드가 경고를 던진 것을 어떻게 알 수 있습니까? 난 내 코드를 처리 할 수없는 오류 : "0으로 나누기 경고"PHP에서 처리되지 않은 오류
예를
try {
echo (25/0);
} catch (exception $exc) {
echo "exception catched";
}
가 발생합니다.
당신은 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();
}
(이것은 당신이 버그를 추적 할 수 있습니다). 예를 보시길 바랍니다 here
예외가 어떻게 작동하는지 완전히 오해했습니다. – user187291
@ stereofrog, 메모 주셔서 감사합니다. 명확하게하려고합니다. – Young
예외의 목적은 오류가 발생하는 것을 "예방"하는 것이 아니라 오류가 발생할 때 처리하는 방법을 제공하는 것입니다. 아직도, 시도를 위해 +1. – user187291
당신은 예외로 이전 스타일의 PHP "오류"변환 오류 처리기를 설치할 필요가 같이 예외를 직접 처리 할 필요가
@svens가 말한대로, 모든 오류를 끄기위한 오류 억제는'error_reporting (0)'으로 수행됩니다. http://us.php.net/manual/en/errorfunc.configuration을보십시오. php # ini.error-보고 –
.. 또는 명령 앞에 '@'를 추가하십시오. Btw. error_reporting이 0으로 설정되면 (errno = 0과 함께) 오류 처리기가 호출됩니다. 오류 처리기는 매우 편리하며 시간, 매개 변수, 메모리 사용 등의 최종 로깅과 같은 작업을 수행하고 관리자에게 알릴 수 있습니다 (치명적인 오류의 경우). 나는 억압 오류를 추천하고 싶지 않습니다 :). – svens