]> git.mxchange.org Git - mailer.git/blobdiff - inc/classes/exceptions/class_FrameworkException.php
0.3.0 inital import
[mailer.git] / inc / classes / exceptions / class_FrameworkException.php
diff --git a/inc/classes/exceptions/class_FrameworkException.php b/inc/classes/exceptions/class_FrameworkException.php
new file mode 100644 (file)
index 0000000..23e6353
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+/**
+ * A general abstract exception. You should not throw this even when you
+ * remove the "abstract" key-word. Better you make your own exception and
+ * attach a dedicated message to it.
+ *
+ * @author     Roland Haeder <roland __NOSPAM__ [at] __REMOVE_ME__ mxchange [dot] org>
+ * @version    1.0
+ */
+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]
+?>