PHP 프로그램을 개발할 때 오류를 완전히 피할 수 없습니다. 구문 오류, 로직 오류 또는 런타임 오류에 관계없이 응용 프로그램의 정상 작동에 영향을 줄 수 있습니다. 그러나 오류가 발생한다고해서 반드시 프로그램 충돌을 의미하는 것은 아닙니다. 합리적인 오류 처리는 개발자가 오류를 더 잘 잡고 관리하는 데 도움이되며, 프로그램이 비정상적인 상황에서 여전히 정상적으로 실행될 수 있도록 도와줍니다. 이 기사는 잠재적 인 문제를 무시하지 않기 위해 Error_get_last () 함수 및 Try-Catch 문으로 PHP의 오류를 효과적으로 처리하는 방법을 살펴 봅니다.
PHP의 오류는 치명적인 오류 와 치명적이지 않은 오류의 두 가지 범주로 나눌 수 있습니다. 치명적인 오류는 프로그램 실행을 방해하는 반면 치명적인 오류는 경고 또는 알림 일 뿐이며 프로그램은 여전히 계속 실행할 수 있습니다. PHP는 e_warning 및 e_notice 와 같은 치명적인 오류에 대한 기본적으로 코드 실행을 중지하지 않지만 오류 로그에 기록합니다.
이 기본 동작은 종종 개발 중에 일부 문제를 무시하게됩니다. 오류가 명백한 예외를 제외하지 않거나 프로그램을 종료하지 않기 때문입니다. 이 경우 개발자는 오류의 존재를 알지 못해 잠재적 인 버그 또는 성능 문제가 무시됩니다.
error_get_last () 함수는 최신 오류 정보가 포함 된 연관 배열을 반환합니다. 이 기능은 개발자가 예외를 유발하지 않고 PHP 스크립트에서 오류를 포착하는 데 도움이 될 수 있습니다. 특히 프로그램이 예외를 명시 적으로 던지지 않고 계속 실행할 때.
<?php
// 코드를 실행하기 전에 기록 된 오류를 지우십시오
error_clear_last();
// 오류를 유발할 수있는 일부 작업을 수행하십시오
echo $undefined_variable;
// 마지막 오류를 얻고 출력하십시오
$error = error_get_last();
if ($error) {
echo "Error type: " . $error['type'] . "<br>";
echo "Error message: " . $error['message'] . "<br>";
}
?>
이 예에서는 정의되지 않은 변수에 액세스하여 E_Notice 유형 오류를 트리거합니다. error_get_last () 를 통해 잘못된 정보를 캡처하고 해당 처리 조치를 취할 수 있습니다.
PHP의 Try-Catch 문은 예외를 포착하고 처리하는 데 사용됩니다. 프로그램이 실행될 때 예외가 발생하면 시도 코드 블록이 중단되고 예외 처리를 위해 해당 캐치 코드 블록으로 이동합니다. Try-Catch 문은 프로그램에서 논리적 오류를 효과적으로 포착 할 수 있지만 모든 오류 유형, 특히 E_Warning 과 같은 치명적이지 않은 오류를 포착하는 것은 아닙니다.
따라서 Try-Catch 와 함께 Error_get_last ()를 사용하면 두 가지 단점을 보충 할 수 있습니다. Try Statement 블록에서 예외가 발생하면 예외는 캐치를 통해 잡힐 수 있습니다. 명시 적 예외가 발생하지 않으면 Error_Get_Last ()를 사용하여 스크립트 실행 중에 오류 정보를 캡처 할 수 있습니다.
<?php
// 사용자 정의 오류 처리 기능 설정
set_error_handler(function($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
try {
// 코드 실행은 예외를 던지거나 오류를 트리거 할 수 있습니다.
$result = 10 / 0;
} catch (Exception $e) {
echo "Caught exception: " . $e->getMessage() . "<br>";
} catch (ErrorException $e) {
echo "Caught error: " . $e->getMessage() . "<br>";
}
// 사용 error_get_last() 마지막으로 치명적이지 않은 오류를 잡으십시오
$error = error_get_last();
if ($error) {
echo "Last error type: " . $error['type'] . "<br>";
echo "Last error message: " . $error['message'] . "<br>";
}
?>
위 코드에서는 set_error_handler () 를 통해 사용자 정의 오류 처리 기능을 설정합니다. 오류가 발생하면이 함수는 errorexception을 던지고 Try-Catch 문장에서 포착하여 처리합니다. 동시에, 우리는 또한 error_get_last ()를 사용하여 프로그램 실행 중에 발생할 수있는 비 치명적 오류를 캡처합니다.
잠재적 오류를 무시하지 않으려면 개발자는 프로젝트의 실제 요구에 따라 오류보고 수준을 조정해야합니다. 개발 환경에서는 E_ALL 오류 수준을 활성화하여 모든 유형의 오류를 잡아보고 할 수 있도록 권장됩니다. 생산 환경에서는 민감한 정보의 노출을 피하기 위해 일부 오류 보고서를 꺼질 수 있습니다.
// 개발 환경에서 모든 오류 보고서를 활성화하십시오
error_reporting(E_ALL);
ini_set('display_errors', 1);
// 생산 환경에서 디스플레이 오류를 끄십시오
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set('display_errors', 0);
개발 단계 나 프로덕션 환경에서 오류 메시지 로깅이 매우 중요합니다. 적절한 로깅 메커니즘을 설정함으로써 개발자는 백그라운드에서 잠재적 인 문제를 추적하고 적시에 고칠 수 있습니다. php의 로그 파일 경로는 ini_set () 를 통해 구성 할 수 있습니다.
ini_set('log_errors', 1);
ini_set('error_log', '/path/to/php-error.log');
정기적으로 오류 로그를 점검하는 것은 문제를 무시하지 않는 좋은 습관입니다. 오류로 인해 프로그램이 충돌하거나 즉시 문제를 일으키지 않더라도 장기간 누적 된 작은 오류는 응용 프로그램의 성능 또는 안정성에 영향을 줄 수 있습니다. 로그 파일을 정기적으로 검토함으로써 개발자는 잠재적 인 위험을 식별하고 적시에 고칠 수 있습니다.
PHP는 풍부한 오류 처리 메커니즘을 제공하지만 합리적으로 사용하지 않으면 일부 오류가 무시되어 프로그램의 안정성과 신뢰성에 영향을 줄 수 있습니다. Error_Get_Last () 와 Try-Catch를 결합하여 개발자는 잠재적 인 문제를 무시하지 않도록 오류를보다 포괄적으로 포착하고 처리 할 수 있습니다. 또한 합리적으로 오류 수준 및 로깅을 구성하면 코드 품질 및 사용자 경험을 향상시켜 문제를 적시에 발견하고 해결하는 데 도움이 될 수 있습니다.