]> git.mxchange.org Git - hub.git/blobdiff - application/hub/exceptions.php
Do not call handlePackageByUnhandledPackage() directly, this caused decoding of alrea...
[hub.git] / application / hub / exceptions.php
index 11116ed318fd3d6e3d7c5e28e48533592e2031ab..340266b067dea208f239b04b44fcf38be8a3a355 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 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
@@ -22,7 +21,7 @@
  * 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)) {
@@ -30,21 +29,23 @@ function hub_exception_handler ($exceptionInstance) {
                $trace = $exceptionInstance->getTrace();
 
                // Get 3 call levels
-               $backTrace = "";
+               $backTrace = '';
                for ($idx = 0; $idx < 3; $idx++) {
                        // Copy array for argument analysis and init variable
                        $traceArray = $trace[$idx];
-                       $argsString = "";
+                       $argsString = '';
 
                        // Convert arguments type into human-readable
                        foreach ($traceArray['args'] as $arg) {
-                               $argsString .= ", " . gettype($arg);
+                               $argsString .= ', ' . gettype($arg);
                        } // END - foreach
                        $argsString = substr($argsString, 2);
 
                        // Set missing file/line
-                       if (!isset($traceArray['file'])) $traceArray['file'] = 'unknown';
-                       if (!isset($traceArray['line'])) $traceArray['line'] = '0';
+                       if (!isset($traceArray['file']))  $traceArray['file']  = 'unknown';
+                       if (!isset($traceArray['line']))  $traceArray['line']  = '0';
+                       if (!isset($traceArray['class'])) $traceArray['class'] = 'UnknownObject';
+                       if (!isset($traceArray['type']))  $traceArray['type']  = '->';
 
                        $backTrace .= sprintf("---------- Pos %d: ----------
 Method : %s%s%s(%s)
@@ -92,8 +93,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]
 ?>