knot-lib / exception
Exception base class library
Installs: 3 069
Dependents: 8
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >=7.2
- ext-json: *
- stk2k/collection: ~0.1
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^8.5.15
README
Description
Exception base class library
Class Hierarchy
\Exception
|
+-- KnotPhpException
|
+--[Package]Logic
| |
| +-- PhpErrorException
|
+--[Package]Runtime
|
+-- ClassNotFoundException
|
+-- HttpStatusException
|
+-- InterfaceNotFoundException
|
+-- InvalidArgumentException
|
+-- PhpParseException
Note
- [MUST]You MUST NOT catch Logic Exceptions
- [MUST]You MUST catch Runtime Exceptions
Interface Hierarchy
\Throwable
|
+-- KnotPhpExceptionInterface
|
+--[Package]Logic
| |
| +-- LogicExceptionInterface
|
+--[Package]Runtime
|
+-- BusinessExceptionInterface
|
+-- ConfigExceptionInterface
|
+-- RuntimeExceptionInterface
Note
- You can catch exceptions by interface, instead of catching by concrete exception class names.
try{ doSomething(); } catch(BusinessExceptionInterface $e) { // This typically means recoverable error, so you can process the exception and continue the procedure. } catch(RuntimeExceptionInterface $e) { // This typically means fatal error, so you should report the situation(my be logs) and abort the procedure. }
Back Traces
Every KnotPhpException objects have own backtraces. So you can trace the call history by calling KnotPhpException#getBackTraceList() method.
try{ doSomething(); } catch(KnotPhpException $e) { foreach($e->getBackTraceList() as $trace){ // $trace is always instance of BacktraceItem $file = $trace->getFile(); $line = $trace->getLine(); $class = $trace->getClass(); $type = $trace->getType(); $function = $trace->getFunction(); echo "{$class}{$type}{$function} called at {$file}/{$line}" . PHP_EOL; }); }
Requirement
PHP 7.2 or later
Installing knot-lib/exception
The recommended way to install knot-lib/exception is through Composer.
composer require knot-lib/exception
After installing, you need to require Composer's autoloader:
require 'vendor/autoload.php';
License
Author
Disclaimer
This software is no warranty.
We are not responsible for any results caused by the use of this software.
Please use the responsibility of the your self.