/** * Override WikiaException report() and write exceptions to error_log */ function report() { // Display normal mediawiki error page for mediawiki exceptions if ($this->_original instanceof MWException) { $this->_original->report(); } else { WikiaLogger::instance()->error(__CLASS__, ['err' => $this->getMessage(), 'exception' => $this->getOriginal()]); } }
/** * Override WikiaException report() and write exceptions to error_log */ function report() { global $wgRequest; $info = ''; if (!empty($this->_original)) { $file = $this->_original->getFile(); $line = $this->_original->getLine(); $message = $this->_original->getMessage(); $info = "exception has occurred at line {$line} of {$file}: {$message}"; } else { $info = "unknown exception has occurred"; } $url = '[no URL]'; if (isset($wgRequest)) { $url = $wgRequest->getFullRequestURL(); } // Display normal mediawiki eror page for mediawiki exceptions if ($this->_original instanceof MWException) { $this->_original->report(); } else { trigger_error("[REPORT: {$this->getMessage()}] WikiaDispatcher reports an {$info} (URL: {$url}) [REPORT: End]", E_USER_ERROR); } }
/** * Report an exception to the user * @param Exception|Throwable $e */ protected static function report($e) { try { // Try and show the exception prettily, with the normal skin infrastructure if ($e instanceof MWException) { // Delegate to MWException until all subclasses are handled by // MWExceptionRenderer and MWException::report() has been // removed. $e->report(); } else { MWExceptionRenderer::output($e, MWExceptionRenderer::AS_PRETTY); } } catch (Exception $e2) { // Exception occurred from within exception handler // Show a simpler message for the original exception, // don't try to invoke report() MWExceptionRenderer::output($e, MWExceptionRenderer::AS_RAW, $e2); } }
/** * Report an exception to the user * @param Exception $e */ protected static function report(Exception $e) { global $wgShowExceptionDetails; $cmdLine = MWException::isCommandLine(); if ($e instanceof MWException) { try { // Try and show the exception prettily, with the normal skin infrastructure $e->report(); } catch (Exception $e2) { // Exception occurred from within exception handler // Show a simpler message for the original exception, // don't try to invoke report() $message = "MediaWiki internal error.\n\n"; if ($wgShowExceptionDetails) { $message .= 'Original exception: ' . self::getLogMessage($e) . "\nBacktrace:\n" . self::getRedactedTraceAsString($e) . "\n\nException caught inside exception handler: " . self::getLogMessage($e2) . "\nBacktrace:\n" . self::getRedactedTraceAsString($e2); } else { $message .= "Exception caught inside exception handler.\n\n" . "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " . "to show detailed debugging information."; } $message .= "\n"; if ($cmdLine) { self::printError($message); } else { echo nl2br(htmlspecialchars($message)) . "\n"; } } } else { $message = "Exception encountered, of type \"" . get_class($e) . "\""; if ($wgShowExceptionDetails) { $message .= "\n" . MWExceptionHandler::getLogMessage($e) . "\nBacktrace:\n" . self::getRedactedTraceAsString($e) . "\n"; } if ($cmdLine) { self::printError($message); } else { echo nl2br(htmlspecialchars($message)) . "\n"; } } }
/** * Report an exception to the user */ protected static function report(Exception $e) { global $wgShowExceptionDetails; $cmdLine = MWException::isCommandLine(); if ($e instanceof MWException) { try { // Try and show the exception prettily, with the normal skin infrastructure $e->report(); } catch (Exception $e2) { // Exception occurred from within exception handler // Show a simpler error message for the original exception, // don't try to invoke report() $message = "MediaWiki internal error.\n\n"; if ($wgShowExceptionDetails) { $message .= 'Original exception: ' . $e->__toString() . "\n\n" . 'Exception caught inside exception handler: ' . $e2->__toString(); } else { $message .= "Exception caught inside exception handler.\n\n" . "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " . "to show detailed debugging information."; } $message .= "\n"; if ($cmdLine) { self::printError($message); } else { self::escapeEchoAndDie($message); } } } else { $message = "Unexpected non-MediaWiki exception encountered, of type \"" . get_class($e) . "\"\n" . $e->__toString() . "\n"; if ($wgShowExceptionDetails) { $message .= "\n" . $e->getTraceAsString() . "\n"; } if ($cmdLine) { self::printError($message); } else { self::escapeEchoAndDie($message); } } }
/** * Report an exception to the user */ function wfReportException(Exception $e) { if ($e instanceof MWException) { try { $e->report(); } catch (Exception $e2) { // Exception occurred from within exception handler // Show a simpler error message for the original exception, // don't try to invoke report() $message = "MediaWiki internal error.\n\n" . "Original exception: " . $e->__toString() . "\n\nException caught inside exception handler: " . $e2->__toString() . "\n"; if (!empty($GLOBALS['wgCommandLineMode'])) { echo $message; } else { echo nl2br(htmlspecialchars($message)) . "\n"; } } } else { echo $e->__toString(); } }
/** * Report an exception to the user */ function wfReportException(Exception $e) { global $wgShowExceptionDetails; $cmdLine = MWException::isCommandLine(); if ($e instanceof MWException) { try { $e->report(); } catch (Exception $e2) { // Exception occurred from within exception handler // Show a simpler error message for the original exception, // don't try to invoke report() $message = "MediaWiki internal error.\n\n"; if ($wgShowExceptionDetails) { $message .= 'Original exception: ' . $e->__toString() . "\n\n" . 'Exception caught inside exception handler: ' . $e2->__toString(); } else { $message .= "Exception caught inside exception handler.\n\n" . "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " . "to show detailed debugging information."; } $message .= "\n"; if ($cmdLine) { wfPrintError($message); } else { echo nl2br(htmlspecialchars($message)) . "\n"; } } } else { $message = "Unexpected non-MediaWiki exception encountered, of type \"" . get_class($e) . "\"\n" . $e->__toString() . "\n"; if ($wgShowExceptionDetails) { $message .= "\n" . $e->getTraceAsString() . "\n"; } if ($cmdLine) { wfPrintError($message); } else { echo nl2br(htmlspecialchars($message)) . "\n"; } } }
/** * Report an exception to the user */ function wfReportException(Exception $e) { $cmdLine = MWException::isCommandLine(); if ($e instanceof MWException) { try { $e->report(); } catch (Exception $e2) { // Exception occurred from within exception handler // Show a simpler error message for the original exception, // don't try to invoke report() $message = "MediaWiki internal error.\n\n"; if ($GLOBALS['wgShowExceptionDetails']) { $message .= "Original exception: " . $e->__toString(); } $message .= "\n\nException caught inside exception handler"; if ($GLOBALS['wgShowExceptionDetails']) { $message .= ": " . $e2->__toString(); } $message .= "\n"; if ($cmdLine) { wfPrintError($message); } else { echo nl2br(htmlspecialchars($message)) . "\n"; } } } else { $message = "Unexpected non-MediaWiki exception encountered, of type \"" . get_class($e) . "\"\n" . $e->__toString() . "\n"; if ($GLOBALS['wgShowExceptionDetails']) { $message .= "\n" . $e->getTraceAsString() . "\n"; } if ($cmdLine) { wfPrintError($message); } else { echo nl2br(htmlspecialchars($message)) . "\n"; } } }