1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php namespace Laravel;
- class Error {
- /**
- * Handle an exception and display the exception report.
- *
- * @param Exception $exception
- * @return void
- */
- public static function exception($exception)
- {
- static::log($exception);
- // If detailed errors are enabled, we'll just format the exception into
- // a simple error message and display it on the screen. We don't use a
- // View in case the problem is in the View class itself so we can not
- // run into a white screen of death situation.
- if (Config::get('error.detail'))
- {
- echo "<html><h2>Unhandled Exception</h2>
- <h3>Message:</h3>
- <pre>".$exception->getMessage()."</pre>
- <h3>Location:</h3>
- <pre>".$exception->getFile()." on line ".$exception->getLine()."</pre>
- <h3>Stack Trace:</h3>
- <pre>".$exception->getTraceAsString()."</pre></html>";
- }
- else
- {
- Response::error('500')->send();
- }
- exit(1);
- }
- /**
- * Handle a native PHP error as an ErrorException.
- *
- * @param int $code
- * @param string $error
- * @param string $file
- * @param int $line
- * @return void
- */
- public static function native($code, $error, $file, $line)
- {
- if (error_reporting() === 0) return;
- // For a PHP error, we'll create an ErrorExcepetion and then feed that
- // exception to the exception method, which will create a simple view
- // of the exception details. The ErrorException class is built-in to
- // PHP for converting native errors to Exceptions.
- $exception = new \ErrorException($error, $code, 0, $file, $line);
- if (in_array($code, Config::get('error.ignore')))
- {
- return static::log($exception);
- return true;
- }
- static::exception($exception);
- }
- /**
- * Handle the PHP shutdown event.
- *
- * @return void
- */
- public static function shutdown()
- {
- // If a fatal error occured that we have not handled yet, we will
- // create an ErrorException and feed it to the exception handler,
- // as it will not have been handled by the error handler.
- if ( ! is_null($error = error_get_last()))
- {
- extract($error, EXTR_SKIP);
- static::exception(new \ErrorException($message, $type, 0, $file, $line));
- }
- }
- /**
- * Log an exception.
- *
- * @param Exception $exception
- * @return void
- */
- public static function log($exception)
- {
- if (Config::get('error.log'))
- {
- call_user_func(Config::get('error.logger'), $exception);
- }
- }
- }
|