calgamolib/exception

This package is abandoned and no longer maintained. The author suggests using the knot-lib/exception package instead.

Exception base class library

0.2.0 2019-12-03 23:01 UTC

This package is auto-updated.

Last update: 2019-12-09 09:17:27 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Code Climate Total Downloads

Description

Exception base class library

Class Hierarchy

\Exception 
  |
  +-- CalgamoException 
  |
  +--[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 
    |
    +-- CalgamoExceptionInterface
    |
    +--[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 CalgamoException objects have own backtraces. So you can trace the call history by calling CalgamoException#getBackTraceList() method.

try{
    doSomething();
}
catch(CalgamoException $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.1 or later

Installing calgamolib/exception

The recommended way to install calgamolib/exception is through Composer.

composer require calgamolib/exception

After installing, you need to require Composer's autoloader:

require 'vendor/autoload.php';

License

MIT

Author

stk2k

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.