오류는 프로그래밍시 개발자가 직면 한 가장 일반적인 이벤트입니다. 오류는 구문, 런타임 또는 논리적으로 분류 할 수 있습니다. 문이 끝날 때 세미콜론을 누락하는 것은 구문 오류의 예입니다. 서버가 다운되었을 때 데이터베이스에 연결하려고하는 것은 런타임 오류의 예입니다. 변수에 잘못된 데이터를 제공하는 것은 로직 오류의 예입니다. 코드의 오류 수를 줄이고 효과를 완화하려면 웹 응용 프로그램에서 적절한 오류 처리가 필수적입니다.
이 기사는 PHP 오류 처리의 충돌 과정입니다. PHP의 내장 오류보고 레벨과 사용자 지정 오류 처리기 및 예외 처리로 오류를 처리하는 방법에 대해 배웁니다.
<span><span><?php </span></span><span><span>$test = 5; </span></span><span><span>if ($test > 1) { </span></span><span> <span>trigger_error('Value of $test must be 1 or less', E_USER_NOTICE); </span></span><span><span>}</span></span>
handler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext)사용자 정의 오류 핸들러 기능을 살펴 보겠습니다. 아래의 예는 데이터베이스가 발생할 때마다 데이터베이스 테이블 데이터베이스에 오류를 기록합니다.
<span><span><?php </span></span><span><span>$test = 5; </span></span><span><span>if ($test > 1) { </span></span><span> <span>trigger_error('Value of $test must be 1 or less', E_USER_NOTICE); </span></span><span><span>}</span></span>위의 스 니펫은 다음을 수행하는 오류 핸들러를 등록합니다. 치명적이지 않은 오류가 발생하면 레코드가 오류를 표시하고 파일에 로그인하는 대신 데이터베이스에 삽입됩니다. 치명적인 오류가 발생하면 데이터베이스에 로그인하여 스크립트를 종료합니다. 그러나 알아야 할 맞춤형 오류 처리기에는 몇 가지 제한 사항이 있습니다. 오류 핸들러는 PHP의 표준 오류 처리 동작을 우회하므로 핸들러 자체 내에서 발생할 수있는 오류를 처리 할 수 없습니다. 예를 들어 데이터베이스 서버가 다운 된 경우 위의 기능이 로그를 기록하지 못합니다. 또한 오류 핸들러는 e_core_error 및 e_compile_error와 같은 특정 내부 오류를 포착 할 수 없습니다. 또는 동일한 파일의 E_Strict 오류와 같은 핸들러가 등록하기 전에 오류가 발생하기 때문에 핸들러가 정의됩니다.
handler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext)
<span><span><?php </span></span><span><span>$test = 5; </span></span><span><span>if ($test > 1) { </span></span><span> <span>trigger_error('Value of $test must be 1 or less', E_USER_NOTICE); </span></span><span><span>}</span></span>
handler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext)요약 PHP는 로깅 및 표시를 포함하여 오류 조건을 처리하기위한 다양한 내장 기능을 제공합니다. 또한 오류 처리기를 등록하고 예외를 사용하여 오류 처리 전략을 사용자 정의 할 수있는 유연성을 제공합니다. 오류는 삶의 사실이지만,이 기사에서 제시 한 정보가 더 우아하게 처리하는 데 도움이되기를 바랍니다. Ilya Andriyanov / Shutterstock을 통한
<span><span><?php </span></span><span><span>function errorHandler($errno, $errstr, $errfile, $errline) { </span></span><span> <span>static $db; </span></span><span> <span>if (empty($db)) { </span></span><span> <span>$db = new PDO(DSN, DBUSER, DBPASS); </span></span><span> <span>} </span></span><span> </span><span> <span>$query = "INSERT INTO errorlog (severity, message, filename, lineno, time) VALUES (?, ?, ?, ?, NOW())"; </span></span><span> <span>$stmt = $db->prepare($query); </span></span><span> </span><span> <span>switch ($errno) { </span></span><span> <span>case E_NOTICE: </span></span><span> <span>case E_USER_NOTICE: </span></span><span> <span>case E_DEPRECATED: </span></span><span> <span>case E_USER_DEPRECATED: </span></span><span> <span>case E_STRICT: </span></span><span> <span>$stmt->execute(array("NOTICE", $errstr, $errfile, $errline)); </span></span><span> <span>break; </span></span><span> </span><span> <span>case E_WARNING: </span></span><span> <span>case E_USER_WARNING: </span></span><span> <span>$stmt->execute(array("WARNING", $errstr, $errfile, $errline)); </span></span><span> <span>break; </span></span><span> </span><span> <span>case E_ERROR: </span></span><span> <span>case E_USER_ERROR: </span></span><span> <span>$stmt->execute(array("FATAL", $errstr, $errfile, $errline)); </span></span><span> <span>exit("FATAL error <span><span>$errstr</span> at <span>$errfile</span>:<span>$errline</span>"</span>); </span></span><span> </span><span> <span>default: </span></span><span> <span>exit("Unknown error at <span><span>$errfile</span>:<span>$errline</span>"</span>); </span></span><span> <span>} </span></span><span><span>} </span></span><span> </span><span><span>set_error_handler("errorHandler"); </span></span><span> </span><span><span>$test = 5; </span></span><span><span>if ($test > 1) { </span></span><span> <span>trigger_error("Value of <span><span>$test</span> must be 1 or less"</span>, E_USER_NOTICE); </span></span><span><span>}</span></span>PHP의 오류 처리는 웹 애플리케이션의 무결성과 기능을 유지하는 데 중요합니다. 개발자가 스크립트 실행 중에 발생할 수있는 문제를 식별하고 수정하는 데 도움이됩니다. 적절한 오류 처리가 없으면 사소한 문제는 응용 프로그램 충돌 또는 민감한 정보를 사용자에게 노출시키는 것과 같은 중대한 문제를 일으킬 수 있습니다. 또한 개발자가 혼란스러운 오류 메시지를 표시하지 않고 오류가 발생할 때 사용자가 보는 내용을 제어 할 수 있으므로 사용자 경험을 향상시킵니다.
PHP가 기본적으로 오류를 처리하는 방법은 무엇입니까?
PHP의 다른 유형의 오류는 무엇입니까? PHP는 치명적인 오류, 경고, 구문 분석 오류 및 통지를 포함한 여러 유형으로 오류를 분류합니다. 치명적인 오류는 존재하지 않는 함수를 호출하거나 쓸 수없는 파일에 쓰는 것과 같은 중요한 오류입니다. 경고는 스크립트가 계속 실행될 수있는 치명적이지 않은 오류입니다. 스크립트에 구문 실수가있을 때 구문 분석 오류가 발생합니다. 통지는 스크립트를 실행하는 동안 PHP가 발생하는 사소한 오류 또는 가능한 오류입니다.
PHP에서 오류 처리를 사용자 정의 할 수 있습니까?예외는 스크립트 지침의 정상적인 흐름을 방해하는 스크립트를 실행하는 동안 발생하는 이벤트입니다. 예외가 발생하면 PHP는 스크립트 실행을 중단하고 예외를 처리 할 캐치 블록을 찾기 시작합니다. 캐치 블록이 발견되지 않으면 PHP는 치명적인 오류를 표시하고 스크립트 실행을 중단합니다.
PHP의 예외를 어떻게 처리 할 수 있습니까?PHP의 오류와 예외의 주요 차이점은 처리 방식입니다. 오류는 PHP 엔진에서 처리되며 오류보고 설정 및 사용자 정의 오류 처리기를 사용하여 제어 할 수 있습니다. 반면에 예외는 스크립트에 의해 처리되고 시도, 캐치 및 마지막으로 블록을 사용하여 제어 할 수 있습니다.
PHP의 @ 연산자는 오류 메시지를 억제하는 데 사용됩니다. PHP의 표현식으로 배정되면 해당 표현식에 의해 생성 될 수있는 오류 메시지가 무시됩니다.
위 내용은 Phpmaster | PHP의 오류 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!