* @version 0.0.0 * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ abstract class FrameworkException extends ReflectionException { /** * Array for the backtrace */ private $backTrace = array(); /** * The super constructor for all exceptions * * @param $message The non-optional message for the exception * @param $code An optional code for better debugging * @return void */ public function __construct($message, $code = 0) { // Extract backtrace $this->saveBackTrace(); // Cast all data $message = (string) $message; $code = (int) $code; // make sure everything is assigned properly parent::__construct($message, $code); } /** * Save the current backtrace * * @return void */ private final function saveBackTrace () { $this->backTrace = debug_backtrace(); } /** * Get saved backtrace * * @return $backTrace The full backtrace in an array */ public final function getBackTrace () { return $this->backTrace; } /** * Returns the name of the thrown exception * * @return $toString The name of the thrown exception */ public function __toString() { return get_class($this); } /** * Getter for hex-decimal code * * @return $hexCode The exception code in hex-decimal format */ public final function getHexCode () { // Get the decimal code $code = $this->getCode(); // Format it to hex-decimal, 0x as prefix and 3 chars $hexCode = sprintf("0x%03s", dechex($code)); // Return it return $hexCode; } } // [EOF] ?>