CakePHP - Manejo de errores y excepciones
La falla del sistema debe manejarse de manera efectiva para que funcione sin problemas. CakePHP viene con captura de errores predeterminada, que imprime y registra los errores a medida que ocurren. Este mismo controlador de errores se utiliza para detectarExceptions.
El controlador de errores muestra errores, cuando la depuración es verdadera y registra el error, cuando la depuración es falsa. CakePHP tiene varias clases de excepción y el manejo de excepciones incorporado capturará cualquier excepción no detectada y generará una página útil.
Configuración de errores y excepciones
Los errores y las excepciones se pueden configurar en el archivo config\app.php. El manejo de errores acepta algunas opciones que le permiten personalizar el manejo de errores para su aplicación:
Opción | Tipo de datos | Descripción |
---|---|---|
errorLevel | En t | El nivel de errores que le interesa capturar. Utilice las constantes de error php integradas y las máscaras de bits para seleccionar el nivel de error que le interesa. |
rastro | bool | Incluya seguimientos de pila para errores en archivos de registro. Los seguimientos de pila se incluirán en el registro después de cada error. Esto es útil para encontrar dónde y cuándo se generan los errores. |
exceptionRenderer | cuerda | La clase responsable de procesar excepciones no detectadas. Si eliges uncustom class, debe colocar el archivo para esa clase en src/Error. Esta clase necesita implementar unrender() método. |
Iniciar sesión | bool | Cuando es verdadero, las excepciones + sus seguimientos de pila se registrarán en Cake\Log\Log. |
skipLog | formación | Una matriz de nombres de clases de excepción que no se deben registrar. Esto es útil para eliminarNotFoundExceptions u otros mensajes de registros comunes pero poco interesantes. |
extraFatalErrorMemory | En t | Establezca el número de megabytes para aumentar el límite de memoria cuando se encuentre un error fatal. Esto permite un respiro para completar el registro o el manejo de errores. |
Ejemplo
Realice cambios en el config/routes.php archivo como se muestra en el siguiente código.
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();
});
Crear ExpsController.php archivar en src/Controller/ExpsController.php. Copie el siguiente código en el archivo del controlador.
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 un directorio Exps a src/Template y bajo ese directorio crea un Viewarchivo llamado index.php. Copie el siguiente código en ese archivo.
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/>
Ejecute el ejemplo anterior visitando la siguiente URL.
http: // localhost / cakephp4 / exception / 5/0
Salida
Tras la ejecución, recibirá el siguiente resultado.