CakePHP-오류 및 예외 처리
시스템의 원활한 운영을 위해 시스템 장애를 효과적으로 처리해야합니다. CakePHP는 오류가 발생할 때이를 인쇄하고 기록하는 기본 오류 트래핑과 함께 제공됩니다. 이 동일한 오류 처리기가Exceptions.
오류 처리기는 debug가 true이면 오류를 표시하고 debug가 false이면 오류를 기록합니다. CakePHP에는 많은 예외 클래스가 있으며 내장 된 예외 처리는 잡히지 않은 예외를 캡처하고 유용한 페이지를 렌더링합니다.
오류 및 예외 구성
오류 및 예외는 파일에서 구성 할 수 있습니다. config\app.php. 오류 처리는 응용 프로그램에 맞게 오류 처리를 조정할 수있는 몇 가지 옵션을 허용합니다.
선택권 | 데이터 형식 | 기술 |
---|---|---|
errorLevel | int | 캡처하려는 오류 수준입니다. 내장 된 PHP 오류 상수와 비트 마스크를 사용하여 관심있는 오류 수준을 선택합니다. |
자취 | 부울 | 로그 파일에 오류에 대한 스택 추적을 포함합니다. 스택 추적은 각 오류 후 로그에 포함됩니다. 이는 오류가 발생하는 위치 /시기를 찾는 데 유용합니다. |
exceptionRenderer | 끈 | 포착되지 않은 예외를 렌더링하는 클래스입니다. 당신이 선택하면custom 클래스의 경우 해당 클래스에 대한 파일을 src/Error. 이 클래스는render() 방법. |
로그 | 부울 | true이면 예외 + 해당 스택 추적이 기록됩니다. Cake\Log\Log. |
skipLog | 정렬 | 기록되지 않아야하는 예외 클래스 이름의 배열입니다. 제거하는 데 유용합니다.NotFoundExceptions 또는 기타 일반적이지만 흥미롭지 않은 로그 메시지. |
extraFatalErrorMemory | int | 치명적인 오류가 발생할 때 메모리 제한을 늘릴 MB 수로 설정합니다. 이를 통해 호흡 공간이 로깅 또는 오류 처리를 완료 할 수 있습니다. |
예
변경 config/routes.php 다음 코드와 같이 파일.
config/routes.php
<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('/exception/:arg1/:arg2',
['controller'=>'Exps','action'=>'index'],
['pass' => ['arg1', 'arg2']]);
$builder->fallbacks();
});
창조하다 ExpsController.php 파일 src/Controller/ExpsController.php. 컨트롤러 파일에 다음 코드를 복사합니다.
src/Controller/ExpsController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Core\Exception\Exception;
class ExpsController extends AppController {
public function index($arg1,$arg2) {
try{
$this->set('argument1',$arg1);
$this->set('argument2',$arg2);
if(($arg1 > 1 || $arg1 > 10) || ($arg2 < 1 || $arg2 > 10))
throw new Exception("One of the number is out of range [1-10].");
} catch(\Exception $ex){
echo $ex->getMessage();
}
}
}
?>
디렉토리 생성 Exps ...에서 src/Template 그 디렉토리 아래에 Viewindex.php라는 파일. 해당 파일에 다음 코드를 복사하십시오.
src/Template/Exps/index.php
This is CakePHP tutorial and this is an example of Passed arguments.
Argument-1: <?=$argument1?><br/>
Argument-2: <?=$argument2?><br/>
다음 URL을 방문하여 위의 예를 실행하십시오.
http : // localhost / cakephp4 / exception / 5 / 0
산출
실행하면 다음 출력이 표시됩니다.