php에서 오류를 처리하는 몇 가지 방법을 간단히 요약하면, 프레임의 하위 계층은 일반적으로 이러한 방법을 통해 오류 처리를 구현하고 필요한 경우 수동으로 처리할 수 있습니다.
주로 다음과 같은 몇 가지 방법이 있다
// 시스템 오류 표시 수준
error_reporting(E_WARNING^E_ERROR)
// 에러 처리 방법을 설정한 후, 에러 레벨을 E_ERROR로 설정해도, 에러 처리 후 시스템은 설정된 방법만을 호출하고, 에러에 대해 사용자가 에러를 처리한다.
set_error_handler([appError::class, 'appErr']);
//이상류 처리 방법을 설정한 후에는 시스템에서 던져진 이상이 표시되지 않고 사용자가 스스로 이상을 처리한다
set_exception_handler([appError::class, 'appException']);
// 시스템 이상 인터럽트 콜백
register_shutdown_function([appError::class, 'appShutdown']);
여기 간단하게 해석해서
1:error_reporting( ); 시스템 레벨에 오류가 표시되며, 대응 파라미터를 설정하면 시스템이 현재 레벨의 오류를 대응하여 프레임을 작성하려고 할 경우 가장 간단한 오류 처리 방법은 다음과 같습니다.
테스트 환경:
//모두 보이기
error_reporting(E_ALL);
생산 환경
//모두 표시 안 함
error_reporting(0);
다른 것은 움직일 필요가 없습니다, 이것은 기본적으로 개발과 생산 환경의 로그 문제를 해결하지만, 이것은 생산 환경의 오류에도 매우 우호적이지 않으며, 어떠한 로그도 추적할 수 없습니다.
2:set_error_handler( ); 시스템에 오류가 있을 때 대응하는 메서드(error_reporting 레벨에 관계없이)를 호출하고 오류 처리 방법을 설정한 후 오류 처리 수준을 E_ERROR로 설정하더라도 오류 처리 후 시스템은 설정된 메서드만 호출하고 오류 보고가 아닌 사용자가 해당 오류를 처리합니다.
다음은 콜백 방법과 구체적인 파라미터입니다
/**
* @param $errno, 오류 번호
* @param $errstr, 오류 상세
* @param string $errfile, 오류 파일 보고
* @paramint $errline, 잘못된 행을 보고합니다.
*/
public static function appErr($errno, $errstr, $errfile = '', $errline = 0){
//처리 오류, 환경에 따라 이상 표시 여부 또는 로그 기록 여부를 판단하며, 위의 파라미터는 시스템 콜백으로 자동으로 가져옵니다.
$e= new \Exception($errstr,$errno);
throw $e;
}
3:set_exception_handler; 위의 것과 비슷하게 시스템 이상 처리입니다. 마찬가지로 이상 처리 방법을 설정하면 시스템이 던진 이상이 표시되지 않고 사용자가 스스로 이상을 처리합니다.
구체적인 콜백 방법과 파라미터
/**
* 이상 처리
* @access public
* @param \Exception|\Throwable $e 이상
* @return void
*/
public static function appException($e)
{
//이상을 처리하고 환경에 따라 이상이나 로그 표시 여부를 판단하며 파라미터는 Exception 클래스
var_dump($e);
}
4:register_shutdown_function( ); 시스템 이상 인터럽트가 이 메서드를 호출합니다. 콜백 메서드는 매개 변수가 없습니다. 사용자가 수동으로 마지막 이상을 획득해야 합니다. 자세한 내용은 다음과 같습니다
/**
* 이상 중지 처리
* @access public
* @return void
*/
public static function appShutdown( )
{
//여기는 이상 유무를 판단하여 환경에 따라 처리할 수 있습니다
$error = error_get_last(;
var_dump($error);
}
'개발 꿀팁 > PHP' 카테고리의 다른 글
Pytho목록 (0) | 2022.11.17 |
---|---|
PHP FPM 데이터 캐시 - 실용적인 메모리 테이블 (0) | 2022.11.16 |
PHP RSA 및 RSA2 암호화 코드 (0) | 2022.11.09 |
php 읽기 ini 프로필 속성 (0) | 2022.11.09 |
php 작업 redis 예제 (0) | 2022.11.09 |