CakePHP - Errori e gestione delle eccezioni
Il guasto del sistema deve essere gestito in modo efficace per un funzionamento regolare del sistema. CakePHP viene fornito con il trapping degli errori predefinito, che stampa e registra gli errori non appena si verificano. Questo stesso gestore di errori viene utilizzato per catturareExceptions.
Il gestore degli errori visualizza gli errori, quando il debug è vero e registra l'errore, quando il debug è falso. CakePHP ha un numero di classi di eccezioni e la gestione delle eccezioni incorporata catturerà qualsiasi eccezione non rilevata e renderà una pagina utile.
Configurazione di errori e eccezioni
Errori ed eccezioni possono essere configurati nel file config\app.php. La gestione degli errori accetta alcune opzioni che ti consentono di personalizzare la gestione degli errori per la tua applicazione:
Opzione | Tipo di dati | Descrizione |
---|---|---|
errorLevel | int | Il livello di errori che ti interessa acquisire. Usa le costanti di errore php integrate e le maschere di bit per selezionare il livello di errore che ti interessa. |
traccia | bool | Includere tracce dello stack per gli errori nei file di registro. Le tracce dello stack verranno incluse nel registro dopo ogni errore. Questo è utile per trovare dove / quando vengono generati errori. |
exceptionRenderer | corda | La classe responsabile del rendering delle eccezioni non rilevate. Se scegli un filecustom class, dovresti inserire il file per quella classe in src/Error. Questa classe deve implementare un filerender() metodo. |
log | bool | Quando è vero, verranno registrate le eccezioni + le loro tracce di stack Cake\Log\Log. |
skipLog | Vettore | Un array di nomi di classi di eccezioni che non devono essere registrati. Questo è utile per rimuovereNotFoundExceptions o altri messaggi di log comuni ma poco interessanti. |
extraFatalErrorMemory | int | Impostare il numero di megabyte di cui aumentare il limite di memoria quando si verifica un errore irreversibile. Ciò consente di lasciare spazio per completare la registrazione o la gestione degli errori. |
Esempio
Apporta modifiche nel file config/routes.php file come mostrato nel codice seguente.
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();
});
Creare ExpsController.php file in src/Controller/ExpsController.php. Copiare il codice seguente nel file del controller.
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();
}
}
}
?>
Crea una directory Exps a src/Template e in quella directory creare un file Viewfile chiamato index.php. Copia il codice seguente in quel file.
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/>
Esegui l'esempio precedente visitando il seguente URL.
http: // localhost / cakephp4 / eccezione / 5/0
Produzione
Dopo l'esecuzione, riceverai il seguente output.