error_level 필수. 사용자 정의 에러를 위한 에러 리포트의 레벨을
상술합니다. 번호값 이어야만 합니다. 아래쪽이 표에 가능한 에러 리포트 레벨들이 있습니다.
error_message 필수. 사용자 정의 에러를 위한 오류 메시지를 상술합니다.
error_file 선택적. 에러가 발생한 파일 이름을 상술합니다.
error_line 선택적. 에러가 발생한 줄번호(line number)를 상술합니다.
error_context 선택적. 에러가 발생했을때 모든 변수와 그 변수의 값을 담은 배열을 상술합니다.
에러 리포트 레벨 (= 오류 보고 수준)
이 에러 리포트 레벨(오류 보고 수준)들은 사용자 정의 에러 핸들러를 위해 사용될 수 있는 서로 다른 유형의 에러 입니다:
값
상수
설명
2 E_WARNING 치명적이지 않은 런타임 에러입니다.
스크립트의 실행은 중지되지 않습니다.
8 E_NOTICE 스크립트가 오류일 수 있는것을 발견했지만, 정상적으로 스크립트를 실행할때도 발생할 수 있는것을 찾아냈을때 뜨는 런타임 통지 입니다.
256 E_USER_ERROR 사용자가 만들어낸 치명적인 에러 입니다. trigger_error() 함수를 이용해서 설정한 E_ERROR와 유사합니다.
512 E_USER_WARNING 사용자가 생성한 치명적이지 않은 경고 입니다. trigger_error() 함수를 이용해서 설정한 E_WARNING과 유사합니다.
1024 E_USER_NOTICE 사용자가 생성한 통지 입니다. trigger_error() 함수를 이용해서 설정한 E_NOTICE와 유사합니다.
4096 E_RECOVERABLE_ERROR 잡아낼 수 있는 치명적 에러. E_ERROR과 유사하지만, 사용자 정의 핸들을 통해 잡아낼 수 있습니다. (set_error_handler()을 한번 보세요.)
8191 E_ALL E_STRICT 레벨을 제외한 모든 에러와 경고 입니다. (E_STRICT는 PHP 6.0에서 E_ALL의 한 부분이 될 예정입니다.)
오류 발생시키기(Trigger an Error)
사용자가 데이터를 입력할 수 있는 스크립트에서는,
불법적인 입력이 발생했을때 오류를 발생시키는 것이 상당히 유용합니다.
PHP에서는, 이걸 trigger_error() 함수를 통해 실행 할 수 있습니다.
예제
이 예제에서는 "test" 변수가 "1"보다 클 경우에 오류가 발생합니다:
<?php$test=2;if ($test>1){trigger_error("Value must be 1 or below");}?>
위 코드의 출력 결과는 아래와 같습니다:
Notice: Value must be 1 or belowin C:\webfolder\test.php on line 6
에러는 스크립트내애서 원하는 곳이라면 어디에서나 발생 시킬 수 있고,
두번째 매개변수를 추가함으로서 어떤 에러 레벨(오류 수준)이 발생되어야
하는지 서술할 수 있습니다.
가능한 에러 타입(오류 형태):
•E_USER_ERROR - 사용자가 생성한 치명적 런타임 에러. 복구될 수 없는 에러들이 해당. 스크립트의 실행은 중지됨.
•E_USER_WARNING - 사용자가 생성한 치명적이지 않은 런타임 경고. 스크립트의 실행은 중지되지 않음.
•E_USER_NOTICE - 기본값. 사용자가 생성한 런타임 통지. 오류일수도 있지만, 스크립트가 일반적으로 실행중에도 발생할 수 있는 그런 형태의 에러.
예제
이 예제에서는 "test" 변수가 "1" 보다 크면 E_USER_WARNING가 발생하게 됩니다.
E_USER_WARNING 이 발생하게 되면
커스텀 에러 핸들러(사용자 정의 오류 처리기)를 이용하도록 하고
스크립트를 종료시킵니다:
<?php//error handler functionfunction customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br />"; echo "Ending Script"; die(); }//set error handlerset_error_handler("customError",E_USER_WARNING);//trigger error$test=2;if ($test>1) { trigger_error("Value must be 1 or below",E_USER_WARNING); }?>
위 코드의 출력 결과는 아래와 같아야 합니다:
Error: [512] Value must be 1 or belowEnding Script