rector/src/Exception/ShouldNotHappenException.php

33 lines
974 B
PHP
Raw Permalink Normal View History

2019-10-13 05:59:52 +00:00
<?php
declare (strict_types=1);
namespace Rector\Exception;
use Exception;
2019-09-21 11:03:30 +00:00
use Throwable;
final class ShouldNotHappenException extends Exception
{
2020-11-01 15:57:12 +00:00
/**
* @param string $message
* @param int $code
*/
public function __construct($message = '', $code = 0, ?Throwable $throwable = null)
2019-09-21 11:03:30 +00:00
{
if ($message === '') {
$message = $this->createDefaultMessageWithLocation();
}
parent::__construct($message, $code, $throwable);
}
private function createDefaultMessageWithLocation() : string
2019-09-21 11:03:30 +00:00
{
$debugBacktrace = \debug_backtrace();
$class = $debugBacktrace[2]['class'] ?? null;
$function = $debugBacktrace[2]['function'];
$line = $debugBacktrace[1]['line'] ?? 0;
$method = $class !== null ? $class . '::' . $function : $function;
/** @var string $method */
/** @var int $line */
return \sprintf('Look at "%s()" on line %d', $method, $line);
2019-09-21 11:03:30 +00:00
}
}