Forum und email

에러 제어 연산자

PHP는 에러 제어 연산자를 지원한다: 앳 부호 (@). PHP에서 표현식의 앞에 덧붙이면, 그 표현식에서 발생할수 있는 에러 메시지가 출력되지 않도록 한다. track_errors 기능은 활성화되어있으면, 표현식에서 발생하는 모든 에러는 $php_errormsg변수에 저장될것이다. 이 변수는 에러가 발생할 때마다 덮어씌어질것이고, 그래서 이 변수를 사용하려면 바로바로 확인해야 한다.

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

// this works for any expression, not just functions:
$value = @$cache[$key]; 
// will not issue a notice if the index $key doesn't exist.

?>

Note: @-연산자는 표현식에서만 동작한다. 단순한 규칙: 표현식의 값을 취할수 있으면, 그 표현식 앞에 @ 연산자를 덧붙일수 있다. 예를 들면, 변수, 함수, include()호출, 상수 등의 앞에 덧붙일수 있다. 그러나 함수나 클래스 선언부, if같은 조건문, foreach 등에 이 부호를 덧붙일수는 없다.

error_reporting()함수와 Error Handling and Logging functions에 관한 매뉴얼 섹션을 참고.

Note: "@" 에러-제어 연산자는 해석 에러로 인한 에러 메시지를 가릴수는 없을것이다.

Warning

현재 "@" 에러-제어 연산자는 스크립트 수행을 멈출수 있는 심각한 에러에 대한 에러 메시지들도 보이지 않게 할것이다. 이말의 의미는 어떤 함수에서 에러 메시지를 보이지 않게 하려하려고 "@"을 사용했고 그 함수가 가용하지 않거나 오타를 쓴것일지라도 이 스크립트는 에러 원인에 대한 메시지 없이 그자리에서 즉시 멈추게 될것이다.