소개
개발 중에 오류와 예외가 발생하는 것은 거의 불가피합니다. PHP 개발자의 경우 오류 및 예외 처리는 코드 안정성 및 안정성을 보장하는 데 중요한 단계입니다. 이 기사를 사용하면 PHP의 오류 및 예외를 효과적으로 잡고 처리하고 유용한 디버깅 정보를 제공하는 방법을 살펴 봅니다.
1. 오류 및 예외 소개
PHP에서 오류와 예외는 두 가지 다른 개념입니다. 오류는 일반적으로 PHP 통역사 또는 시스템 (예 : 구문 오류 또는 메모리 오버 플로우)에 의해 발생하는 반면, 예외는 종종 정의되지 않은 변수를 사용하거나 존재하지 않는 파일을 열려고 시도하는 것과 같은 코드의 논리적 문제로 인해 발생합니다. 이러한 문제가 발생하면 PHP는 해당 오류 또는 예외 처리기를 실행하려고 시도합니다.
2. 오류 처리
오류보고 수준
PHP는 다양한 오류보고 수준을 제공하며 개발자는 필요에 따라 표시 할 오류 메시지를 선택할 수 있습니다. 일반적인 오류보고 수준은 다음과 같습니다.
- E_ERROR : 스크립트가 실행을 종료하게하는 치명적인 오류.
- e_warning : 경고 오류, 스크립트가 종료되지 않습니다.
- e_notice : 초기화되지 않은 변수와 같은 일반 프롬프트 등
- E_ALL : 모든 오류, 경고 및 프롬프트가 표시됩니다.
Error_Reporting () 함수를 사용하여 오류 레벨을 설정하십시오. 코드 예제는 다음과 같습니다.
<?php
// 모든 오류를 표시하십시오、경고 및 신속한 정보
error_reporting(E_ALL);
?>
사용자 정의 오류 핸들러
PHP에서는 기본 처리 방법 대신 오류 처리기를 사용자 정의 할 수 있습니다. `set_error_handler ()`function으로 사용자 정의 오류 처리 기능을 설정하십시오. 다음은 샘플 코드입니다.
<?php
// 사용자 정의 오류 처리 기능
function customError($errno, $errstr, $errfile, $errline) {
echo "<b> 오류 : [$ errno] $ errstr- $ errfile : $ errline ";
}
// 사용자 정의 오류 핸들러 SET_ERROR_HANDLER 설정 ( "CustomERROR");
?>
이러한 방식으로 로깅 또는 이메일 알림을 보내는 등 다양한 레벨 및 오류 유형에 따라 다른 처리 로직을 수행 할 수 있습니다.
3. 예외 처리
예외를 던지십시오
PHP에서는`throw '문을 사용하여 예외를 제외 할 수 있습니다. PHP 내장 예외 클래스를 던지거나 예외 클래스를 사용자 정의 할 수 있습니다. 예외를 던지기위한 샘플 코드는 다음과 같습니다.
<?php
// 정의 된 예외를 던지십시오
throw new Exception("Something went wrong.");
// 예외 클래스를 사용자 정의하고 던지십시오
class CustomException extends Exception {
public function __construct($message, $code = 0, Throwable $previous = null) {
parent::__construct($message, $code, $previous);
}
}
throw new CustomException("Custom error occurred.");
?>
예외를 포착하십시오
PHP에서는 '시도 ... 캐치'문을 사용하여 예외를 잡고 처리 할 수 있습니다. 코드 블록에서 발생할 수있는`try '코드,`Catch'코드 블록에는 예외가 발생할 때 처리 로직이 포함되어 있습니다. 예는 다음과 같습니다.
<?php
try {
// 예외를 던질 수있는 코드를 실행하십시오
throw new Exception("Something went wrong.");
} catch (Exception $e) {
// 예외 처리
echo "Caught exception: " . $e-> getMessage ();
}
?>
캐치 코드 블록에서 예외 객체의 getMessage () 메소드를 통해 자세한 예외 정보를 얻을 수 있습니다.
다중 예외 캡처
PHP는 여러 유형의 예외를 포착하기 위해 여러 '캐치'코드 블록을 사용하는 것을 지원합니다. 예는 다음과 같습니다.
<?php
try {
throw new Exception("Something went wrong.");
} catch (CustomException $e) {
// 사용자 정의 예외를 처리합니다
echo "Caught custom exception: " . $e-> getMessage ();
} catch (예외 $ e) {
// 다른 유형의 예외를 처리합니다. $ e-> getMessage ();
}
?>
이 코드에서 CustomeXception 유형을 제외하면 프로그램이 첫 번째 캐치 코드 블록에 들어갑니다. 다른 유형을 제외하고는 프로그램이 두 번째 캐치 코드 블록에 들어갑니다.
4. 오류 및 예외 처리에 대한 모범 사례
- 오류보고 켜기 : 개발 환경에서 모든 오류 및 경고를 켜서 잠재적 인 문제를 적시에 감지하고 수정해야합니다. 생산 환경에서는 심각한 오류 메시지 만 표시하는 것이 좋습니다.`error_reporting (e_all & ~ e_notice)`을 설정하여 달성 할 수 있습니다.
- 사용자 정의 오류 처리기 사용 : 사용자 정의 오류 처리기는 더 나은 추적 및 로그 오류에 도움이 될 수 있습니다. 특히 로그의 오류 정보를 로깅하는 것이 문제를 해결하는 중요한 방법입니다.
- 의미있는 예외를 던지십시오 : 특정 문제가 예측 가능한 경우, 예외의 근본 원인을 표현하고 예외를 포착 할 때 적절한 취급 조치를 촉진하기 위해 의미있는 예외 클래스를 던지십시오.
결론적으로
오류 및 예외 처리는 PHP 개발의 핵심 부분입니다. 오류보고를 합리적으로 표시하고 사용자 정의 오류 처리기를 사용하여 오류를보다 효율적으로 관리하고 처리 할 수 있습니다. 동시에, 예외를 올바르게 던지고 포착함으로써, 문제가 발생할 때 프로그램이 명확한 오류 정보를 제공 할 수 있도록하여 코드의 안정성과 신뢰성을 향상시킬 수 있습니다. 이 기사에서 제공되는 모범 사례가 PHP 개발의 오류 및 예외 처리를 더 잘 처리하는 데 도움이 될 수 있기를 바랍니다.