본문으로 바로가기
728x90
반응형

PHP 는 에러제어연산자(@)를 서포트하고 있습니다. PHP 의 식 앞에 붙은 경우, 그 식에 의해 생성된 에러메세지는 무시됩니다.
set_error_handler 에서 직접 에러 핸들러를 설정한 경우에는 에러제어연산자가 있어도 그 에러 핸들러가 불러집니다. 그러나, 직접 만든 에러 핸들러 안에서 error_reporting() 메소드를 부르면, @ 달린 식으로 생성된 에러의 경우에는 반환값이 0이 되므로 그 값으로 구별할 수 있습니다. 
track_errors 기능이 유효한 경우에는 식에 의해 생성된 에러 메세지는 글로벌 변수 $php_errormsg 에 저장됩니다. 그 변수는 에러가 생성될때마다 값이 변합니다. 그렇기 때문에 그 변수를 사용하고 싶을 경우에는 신속하게 확인할 필요가 있습니다.

<?php
/* 의도적에러 */
$my_file = @file ('non_existent_file') or
    die ("Failed opening file: error was '$php_errormsg'");

// 이 연산자는 함수뿐만 아니라 모든 식에 사용됩니다.
$value = @$cache[$key]; 
// 인덱스 $key 가 존재하지 않을 경우 경고가 발생하지 않습니다.
?>

참고사이트

https://orothi.tistory.com/10

 

[PHP]오류제어연산자 @(골뱅이,at)

php에서 앞에 @(at, 골뱅이)가 사용된 function을 자주 볼 수 있다. 해당 function의 모든 오류메세지를 무시하겠다는 뜻이다. note @ 연산자는 어떠한 값을 얻을 수 있으면, @을 붙일 수 있습니다. 변수, ��

orothi.tistory.com

https://www.php.net/manual/en/language.operators.errorcontrol.php

 

PHP: Error Control Operators - Manual

If you use the ErrorException exception to have a unified error management, I'll advise you to test against error_reporting in the error handler, not in the exception handler as you might encounter some headaches like blank pages as error_reporting might n

www.php.net

https://www.php.net/manual/ja/language.operators.errorcontrol.php

 

PHP: エラー制御演算子 - Manual

If you use the ErrorException exception to have a unified error management, I'll advise you to test against error_reporting in the error handler, not in the exception handler as you might encounter some headaches like blank pages as error_reporting might n

www.php.net

 

728x90
반응형