]> git.mxchange.org Git - hub.git/blobdiff - application/hub/exceptions.php
In case of non-blocking connections (and that is for 99.9999% the case here)
[hub.git] / application / hub / exceptions.php
index 05a27767b08b14c9c21f41df4cdf9b8782754790..8eefa5ea554366f8fac8de19fb38fe3620982521 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>
+ * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0
- * @copyright  Copyright (c) 2007 - 2008 Roland Haeder, 2009 - 2011 Hub Developer Team
+ * @copyright  Copyright (c) 2007 - 2008 Roland Haeder, 2009 - 2015 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
-                       foreach ($traceArray['args'] as $arg) {
-                               $argsString .= ', ' . gettype($arg);
-                       } // END - foreach
-                       $argsString = substr($argsString, 2);
+                       // Any arguments?
+                       if ((isset($traceArray['args'])) && (is_array($traceArray['args'])) && (count($traceArray['args']) > 0)) {
+                               // Convert arguments type into human-readable
+                               foreach ($traceArray['args'] as $arg) {
+                                       $argsString .= ', ' . gettype($arg);
+                               } // END - foreach
+                               $argsString = substr($argsString, 2);
+                       } // END - if
 
                        // Set missing file/line
                        if (!isset($traceArray['file']))  $traceArray['file']  = 'unknown';
@@ -61,7 +61,7 @@ Line   : %d\n",
                                basename($traceArray['file']),
                                $traceArray['line']
                        );
-               } // END - for
+               } // END - foreach
 
                // Construct the message
                $message = sprintf("--------------------------------------------------------------------------------
@@ -87,17 +87,19 @@ Backtrace:
                // Output the message
                print($message);
        } else {
-               // Invalid exception instance detected! Do *only* throw exceptions that
-               // extends our own exception 'FrameworkException' to get such nice
-               // outputs like above.
-               print("exceptionInstance is invalid! Please inform the core developer team.\n");
+               /*
+                * Invalid exception instance detected! Do *only* throw exceptions that
+                * extends our own exception 'FrameworkException' to get such nice
+                * outputs like above.
+                */
+               print('exceptionInstance[]=' . gettype($exceptionInstance) . ' is invalid! Please inform the core developer team.');
        }
 }
 
 // Error handler
 function __errorHandler ($errno, $errstr, $errfile, $errline, array $errcontext) {
        // Construct the message
-       $message = sprintf("File: %s, Line: %s, Code: %s, Message: %s",
+       $message = sprintf('File: %s, Line: %s, Code: %s, Message: %s',
                basename($errfile),
                $errline,
                $errno,
@@ -111,15 +113,21 @@ function __errorHandler ($errno, $errstr, $errfile, $errline, array $errcontext)
 // Assertion handler
 function __assertHandler ($file, $line, $code) {
        // Empty code?
-       if ($code === '') $code = '<em>Unknown</em>';
+       if ($code === '') {
+               $code = '<em>Unknown</em>';
+       } // END - if
 
        // Create message
-       $message = sprintf("File: %s, Line: %s, Code: %s",
+       $message = sprintf('File: %s, Line: %s, Code: %s',
                basename($file),
                $line,
                $code
        );
 
+       // Log assert
+       die($message . PHP_EOL);
+       syslog(LOG_WARNING, $message);
+
        // Throw an exception here
        throw new AssertionException($message, BaseFrameworkSystem::EXCEPTION_ASSERTION_FAILED);
 } // END - function
@@ -127,15 +135,17 @@ function __assertHandler ($file, $line, $code) {
 // Set error handler
 //set_error_handler('__errorHandler');
 
-// Set the new handler
+// Set the exception handler
 set_exception_handler('hub_exception_handler');
 
 // Init assert handling
-assert_options(ASSERT_ACTIVE,     1);
-assert_options(ASSERT_WARNING,    0);
-assert_options(ASSERT_BAIL,       0);
-assert_options(ASSERT_QUIET_EVAL, 0);
-assert_options(ASSERT_CALLBACK,   '__assertHandler');
+assert_options(ASSERT_ACTIVE    , TRUE);
+assert_options(ASSERT_WARNING   , FALSE);
+assert_options(ASSERT_BAIL      , TRUE);
+assert_options(ASSERT_QUIET_EVAL, FALSE);
+
+// Set assertion handler
+assert_options(ASSERT_CALLBACK  , '__assertHandler');
 
 // [EOF]
 ?>