Mercurial > hg > isophonics-drupal-site
diff vendor/psy/psysh/src/Psy/Exception/ErrorException.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/psy/psysh/src/Psy/Exception/ErrorException.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,114 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2017 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy\Exception; + +/** + * A custom error Exception for Psy with a formatted $message. + */ +class ErrorException extends \ErrorException implements Exception +{ + private $rawMessage; + + /** + * Construct a Psy ErrorException. + * + * @param string $message (default: "") + * @param int $code (default: 0) + * @param int $severity (default: 1) + * @param string $filename (default: null) + * @param int $lineno (default: null) + * @param Exception $previous (default: null) + */ + public function __construct($message = '', $code = 0, $severity = 1, $filename = null, $lineno = null, $previous = null) + { + $this->rawMessage = $message; + + if (!empty($filename) && preg_match('{Psy[/\\\\]ExecutionLoop}', $filename)) { + $filename = ''; + } + + switch ($severity) { + case E_STRICT: + $type = 'Strict error'; + break; + + case E_NOTICE: + case E_USER_NOTICE: + $type = 'Notice'; + break; + + case E_WARNING: + case E_CORE_WARNING: + case E_COMPILE_WARNING: + case E_USER_WARNING: + $type = 'Warning'; + break; + + case E_DEPRECATED: + case E_USER_DEPRECATED: + $type = 'Deprecated'; + break; + + case E_RECOVERABLE_ERROR: + $type = 'Recoverable fatal error'; + break; + + default: + $type = 'Error'; + break; + } + + $message = sprintf('PHP %s: %s%s on line %d', $type, $message, $filename ? ' in ' . $filename : '', $lineno); + parent::__construct($message, $code, $severity, $filename, $lineno, $previous); + } + + /** + * Get the raw (unformatted) message for this error. + * + * @return string + */ + public function getRawMessage() + { + return $this->rawMessage; + } + + /** + * Helper for throwing an ErrorException. + * + * This allows us to: + * + * set_error_handler(array('Psy\Exception\ErrorException', 'throwException')); + * + * @throws ErrorException + * + * @param int $errno Error type + * @param string $errstr Message + * @param string $errfile Filename + * @param int $errline Line number + */ + public static function throwException($errno, $errstr, $errfile, $errline) + { + throw new self($errstr, 0, $errno, $errfile, $errline); + } + + /** + * Create an ErrorException from an Error. + * + * @param \Error $e + * + * @return ErrorException + */ + public static function fromError(\Error $e) + { + return new self($e->getMessage(), $e->getCode(), 1, $e->getFile(), $e->getLine(), $e); + } +}