]> git.mxchange.org Git - hub.git/blobdiff - application/hub/exceptions.php
Full backtrace now
[hub.git] / application / hub / exceptions.php
index 3e621fa94200ef54a237c33305758ab592507d29..dbce802e7e1e55f0257982e0b010006d50819063 100644 (file)
@@ -2,10 +2,9 @@
 /**
  * An include file for setting up the exception handler of the hub
  *
- *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0
- * @copyright  Copyright (c) 2007 - 2008 Roland Haeder, 2009, 2010 Hub Developer Team
+ * @copyright  Copyright (c) 2007 - 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
  * @license            GNU GPL 3.0 or any newer version
  *
  * This program is free software: you can redistribute it and/or modify
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-// The hub's own exception handler
+// The node's own exception handler
 function hub_exception_handler ($exceptionInstance) {
        // Is it an object and a valid instance?
        if ((is_object($exceptionInstance)) && ($exceptionInstance instanceof FrameworkException)) {
-               // Get the regular trace
-               $trace = $exceptionInstance->getTrace();
-
-               // Get 3 call levels
+               // Init variable
                $backTrace = '';
-               for ($idx = 0; $idx < 3; $idx++) {
-                       // Copy array for argument analysis and init variable
-                       $traceArray = $trace[$idx];
+
+               // Get all call levels from backtrace
+               foreach ($exceptionInstance->getTrace() as $idx => $traceArray) {
+                       // Init argument string
                        $argsString = '';
 
                        // Convert arguments type into human-readable
@@ -61,7 +58,7 @@ Line   : %d\n",
                                basename($traceArray['file']),
                                $traceArray['line']
                        );
-               } // END - for
+               } // END - foreach
 
                // Construct the message
                $message = sprintf("--------------------------------------------------------------------------------
@@ -94,8 +91,50 @@ Backtrace:
        }
 }
 
+// Error handler
+function __errorHandler ($errno, $errstr, $errfile, $errline, array $errcontext) {
+       // Construct the message
+       $message = sprintf("File: %s, Line: %s, Code: %s, Message: %s",
+               basename($errfile),
+               $errline,
+               $errno,
+               $errstr
+       );
+
+       // Throw an exception here
+       throw new FatalErrorException($message, BaseFrameworkSystem::EXCEPTION_FATAL_ERROR);
+} // END - function
+
+// Assertion handler
+function __assertHandler ($file, $line, $code) {
+       // Empty code?
+       if ($code === '') {
+               $code = '<em>Unknown</em>';
+       } // END - if
+
+       // Create message
+       $message = sprintf("File: %s, Line: %s, Code: %s",
+               basename($file),
+               $line,
+               $code
+       );
+
+       // Throw an exception here
+       throw new AssertionException($message, BaseFrameworkSystem::EXCEPTION_ASSERTION_FAILED);
+} // END - function
+
+// Set error handler
+//set_error_handler('__errorHandler');
+
 // Set the new handler
 set_exception_handler('hub_exception_handler');
 
+// Init assert handling
+assert_options(ASSERT_ACTIVE,     true);
+assert_options(ASSERT_WARNING,    false);
+assert_options(ASSERT_BAIL,       false);
+assert_options(ASSERT_QUIET_EVAL, false);
+assert_options(ASSERT_CALLBACK,   '__assertHandler');
+
 // [EOF]
 ?>