annotate vendor/psy/psysh/src/Psy/Exception/ErrorException.php @ 7:848c88cfe644

More layout
author Chris Cannam
date Fri, 05 Jan 2018 13:59:44 +0000
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of Psy Shell.
Chris@0 5 *
Chris@0 6 * (c) 2012-2017 Justin Hileman
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Psy\Exception;
Chris@0 13
Chris@0 14 /**
Chris@0 15 * A custom error Exception for Psy with a formatted $message.
Chris@0 16 */
Chris@0 17 class ErrorException extends \ErrorException implements Exception
Chris@0 18 {
Chris@0 19 private $rawMessage;
Chris@0 20
Chris@0 21 /**
Chris@0 22 * Construct a Psy ErrorException.
Chris@0 23 *
Chris@0 24 * @param string $message (default: "")
Chris@0 25 * @param int $code (default: 0)
Chris@0 26 * @param int $severity (default: 1)
Chris@0 27 * @param string $filename (default: null)
Chris@0 28 * @param int $lineno (default: null)
Chris@0 29 * @param Exception $previous (default: null)
Chris@0 30 */
Chris@0 31 public function __construct($message = '', $code = 0, $severity = 1, $filename = null, $lineno = null, $previous = null)
Chris@0 32 {
Chris@0 33 $this->rawMessage = $message;
Chris@0 34
Chris@0 35 if (!empty($filename) && preg_match('{Psy[/\\\\]ExecutionLoop}', $filename)) {
Chris@0 36 $filename = '';
Chris@0 37 }
Chris@0 38
Chris@0 39 switch ($severity) {
Chris@0 40 case E_STRICT:
Chris@0 41 $type = 'Strict error';
Chris@0 42 break;
Chris@0 43
Chris@0 44 case E_NOTICE:
Chris@0 45 case E_USER_NOTICE:
Chris@0 46 $type = 'Notice';
Chris@0 47 break;
Chris@0 48
Chris@0 49 case E_WARNING:
Chris@0 50 case E_CORE_WARNING:
Chris@0 51 case E_COMPILE_WARNING:
Chris@0 52 case E_USER_WARNING:
Chris@0 53 $type = 'Warning';
Chris@0 54 break;
Chris@0 55
Chris@0 56 case E_DEPRECATED:
Chris@0 57 case E_USER_DEPRECATED:
Chris@0 58 $type = 'Deprecated';
Chris@0 59 break;
Chris@0 60
Chris@0 61 case E_RECOVERABLE_ERROR:
Chris@0 62 $type = 'Recoverable fatal error';
Chris@0 63 break;
Chris@0 64
Chris@0 65 default:
Chris@0 66 $type = 'Error';
Chris@0 67 break;
Chris@0 68 }
Chris@0 69
Chris@0 70 $message = sprintf('PHP %s: %s%s on line %d', $type, $message, $filename ? ' in ' . $filename : '', $lineno);
Chris@0 71 parent::__construct($message, $code, $severity, $filename, $lineno, $previous);
Chris@0 72 }
Chris@0 73
Chris@0 74 /**
Chris@0 75 * Get the raw (unformatted) message for this error.
Chris@0 76 *
Chris@0 77 * @return string
Chris@0 78 */
Chris@0 79 public function getRawMessage()
Chris@0 80 {
Chris@0 81 return $this->rawMessage;
Chris@0 82 }
Chris@0 83
Chris@0 84 /**
Chris@0 85 * Helper for throwing an ErrorException.
Chris@0 86 *
Chris@0 87 * This allows us to:
Chris@0 88 *
Chris@0 89 * set_error_handler(array('Psy\Exception\ErrorException', 'throwException'));
Chris@0 90 *
Chris@0 91 * @throws ErrorException
Chris@0 92 *
Chris@0 93 * @param int $errno Error type
Chris@0 94 * @param string $errstr Message
Chris@0 95 * @param string $errfile Filename
Chris@0 96 * @param int $errline Line number
Chris@0 97 */
Chris@0 98 public static function throwException($errno, $errstr, $errfile, $errline)
Chris@0 99 {
Chris@0 100 throw new self($errstr, 0, $errno, $errfile, $errline);
Chris@0 101 }
Chris@0 102
Chris@0 103 /**
Chris@0 104 * Create an ErrorException from an Error.
Chris@0 105 *
Chris@0 106 * @param \Error $e
Chris@0 107 *
Chris@0 108 * @return ErrorException
Chris@0 109 */
Chris@0 110 public static function fromError(\Error $e)
Chris@0 111 {
Chris@0 112 return new self($e->getMessage(), $e->getCode(), 1, $e->getFile(), $e->getLine(), $e);
Chris@0 113 }
Chris@0 114 }