<?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)
{
$message = logException($e);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$foo = APPLICATION_PATH;
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($errorHandler)) {
$errorHandler = function ($errno, $errstr, $errfile = null, $errline = null, $errcontext = []) {
// 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 {
echo "log $errstr in $errfile at line $errline";
}
};
set_error_handler($errorHandler);
}
define('APPLICATION_PATH', 'foo');
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)
{
$message = logException($e);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$foo = APPLICATION_PATH;
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($errorHandler)) {
$errorHandler = function ($errno, $errstr, $errfile = null, $errline = null, $errcontext = []) {
// 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 {
echo "log $errstr in $errfile at line $errline";
}
};
set_error_handler($errorHandler);
}
throw new \Exception('after both');
} catch (\Exception $e) {
handleException($e);
}
preferences:
35.57 ms | 402 KiB | 5 Q