labo86 / exception_with_data
Una clase Exception que soporta un array como data
This package's canonical repository appears to be gone and the package has been frozen as a result.
Requires
- php: ^7.4
Requires (Dev)
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-06-24 23:45:01 UTC
README
labo86\exception_with_data
Una clase Exception que soporta un array como data
Uso
use \labo86\exception_with_data\ExceptionWithData; try { throw new ExceptionWithData( "division by zero", [ "dividend" => 100, "divisor" => 0 ]); } catch ( ExceptionWithData $exception ) { print_r($exception->getData()); }
Fundamento
Esta es una biblioteca que solucionar el problema de agregar datos a una excepción. No soy partidario de hacer una biblioteca para una funcionalidad tan simple pero prácticamente todos mis proyectos necesitan de esta funcionalidad.
Además si este código estuviera replicado de todas forma necesitaría tener múltiples capturas:
try { //something } catch ( \lib_1\ExceptionWithData $e ) { //handle 1 } catch ( \lib_2\ExceptionWithData $e ) { //handle 2 } catch ( \lib_3\ExceptionWithData $e ) { //handle 3 }
Elegí un nombre extraño para la clase para demostrar que en realidad quiero que esto se cambie de alguna forma. Ojalá se agregue un nuevo tipo de excepción en el núcleo de PHP.
Ahora además se consideran nuevos manejos y utilidades como:
- serialización Util::toArray()
- relanzamiento de excepciones Util::rethrow()
- captura de excepciones para iteraciones Util::foreachTry()
Instalación
composer require labo86/exception_with_data
Información de mi máquina de desarrollo
Salida de system_info.sh
+ hostnamectl
+ grep -e 'Operating System:' -e Kernel:
Operating System: Ubuntu 20.04 LTS
Kernel: Linux 5.4.0-33-generic
+ php --version
PHP 7.4.3 (cli) (built: May 26 2020 12:24:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
with Xdebug v2.9.2, Copyright (c) 2002-2020, by Derick Rethans
Notas
- El código se apega a las recomendaciones de estilo de PSR-1.
- Este proyecto esta pensado para ser trabajado usando PhpStorm.
- Se usa PHPUnit para las pruebas unitarias de código.
- Para la documentación se utiliza el estilo de phpDocumentor.