* @link https://TheTempusProject.com/Core * @license https://opensource.org/licenses/MIT [MIT LICENSE] */ namespace TheTempusProject\Bedrock\Classes; use Exception; use TheTempusProject\Hermes\Functions\Redirect; use TheTempusProject\Canary\Bin\Canary as Debug; class CustomException extends Exception { private $originFunction = null; private $exceptionName = null; private $originClass = null; private $data = null; /** * This function allows the application to deal with errors * in a dynamic way by letting you customize the response * * @param string $type - The type of the exception being called/thrown. * @param string $data - Any additional data being passed with the exception. * * @example - throw new CustomException('model'); - Calls the model-missing exception */ public function __construct( $type, $data = null ) { $this->originFunction = debug_backtrace()[1]['function']; $this->originClass = debug_backtrace()[1]['class']; $this->exceptionName = $type; $this->data = $data; switch ( $type ) { case 'model': Debug::error( 'Model not found: ' . $data ); break; case 'dbConnection': Debug::error( 'Error Connecting to the database: ' . $data ); break; case 'DB': Debug::error( 'Unspecified database error: ' . $data ); break; case 'view': Debug::error( 'View not found: ' . $data ); break; case 'controller': Debug::error( 'Controller not found: ' . $data ); Redirect::to( 404 ); break; case 'defaultController': Debug::error( 'DEFAULT Controller not found: ' . $data ); Redirect::to( 404 ); break; case 'method': Debug::error( 'Method not found: ' . $data ); Redirect::to( 404 ); break; case 'simpleView': Debug::error( 'View not found: ' . $data ); break; case 'defaultMethod': Debug::error( 'DEFAULT Method not found: ' . $data ); Redirect::to( 404 ); break; default: Debug::error( 'Default exception: ' . $data ); break; } } }