<?php
try {
if (!function_exists('handleException')) {
/**
* @param \Exception $e
* @return string readable message
*/
function logException(\Exception $e)
{
$type = get_class($e);
$msg = $e->getMessage();
$trace = $e->getTraceAsString();
global $logger;
if (isset($logger)) {
$logger->error(sprintf("%s: %s\n%s", $type, $msg, $trace));
if (method_exists($logger, 'newrelicLog')) {
$logger->newrelicLog($e);
}
}
return sprintf("<h1>%s</h1><pre>%s<br/><h2>Debug Trace:</h2>%s</pre>", $type, $msg, $trace);
}
function handleException(\Exception $e)
{
ob_clean();
$message = logException($e);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
trigger_error('boo');
exit();
}
}
if (!isset($shutdownFunction)) {
$shutdownFunction = function () {
try {
$error = error_get_last();
if (isset($error)) {
throw new \Exception(
$error['message'] . ' in ' . $error['file'] . ' at line ' . $error['line'],
$error['type']
);
}
} catch (Exception $e) {
handleException($e);
}
};
register_shutdown_function($shutdownFunction);
}
if (isset($logger) && !isset($errorHandler)) {
$errorHandler = function ($errno, $errstr, $errfile = null, $errline = null, $errcontext = []) use ($logger) {
// prevent exception to be thrown when error_reporting is turned off or suppressed with @
if (error_reporting() !== 0) {
throw new \Exception("$errstr in $errfile at line $errline", $errno);
} else {
$logger->error("$errstr in $errfile at line $errline");
}
};
set_error_handler($errorHandler);
}
if (!function_exists('handleException')) {
/**
* @param \Exception $e
* @return string readable message
*/
function logException(\Exception $e)
{
$type = get_class($e);
$msg = $e->getMessage();
$trace = $e->getTraceAsString();
global $logger;
if (isset($logger)) {
$logger->error(sprintf("%s: %s\n%s", $type, $msg, $trace));
if (method_exists($logger, 'newrelicLog')) {
$logger->newrelicLog($e);
}
}
return sprintf("<h1>%s</h1><pre>%s<br/><h2>Debug Trace:</h2>%s</pre>", $type, $msg, $trace);
}
function handleException(\Exception $e)
{
ob_clean();
$message = logException($e);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
include dirname(__FILE__) . '../modules/frontend/views/error/exception.phtml';
exit();
}
}
if (!isset($shutdownFunction)) {
$shutdownFunction = function () {
try {
$error = error_get_last();
if (isset($error)) {
throw new \Exception(
$error['message'] . ' in ' . $error['file'] . ' at line ' . $error['line'],
$error['type']
);
}
} catch (Exception $e) {
handleException($e);
}
};
register_shutdown_function($shutdownFunction);
}
if (isset($logger) && !isset($errorHandler)) {
$errorHandler = function ($errno, $errstr, $errfile = null, $errline = null, $errcontext = []) use ($logger) {
// prevent exception to be thrown when error_reporting is turned off or suppressed with @
if (error_reporting() !== 0) {
throw new \Exception("$errstr in $errfile at line $errline", $errno);
} else {
$logger->error("$errstr in $errfile at line $errline");
}
};
set_error_handler($errorHandler);
}
throw new \Exception('after both');
} catch (\Exception $e) {
handleException();
}
preferences:
45.04 ms | 402 KiB | 5 Q