mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 14:52:40 +01:00
9b74cb4ee6
Summary: Ref T13395. Moves all remaining code in "libphutil/" into "arcanist/". Test Plan: Ran various arc workflows, although this probably has some remaining rough edges. Maniphest Tasks: T13395 Differential Revision: https://secure.phabricator.com/D20980
37 lines
1.2 KiB
PHP
37 lines
1.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Prior to PHP 5.3, PHP does not support nested exceptions; this class provides
|
|
* limited support for nested exceptions. Use methods on
|
|
* @{class:PhutilErrorHandler} to unnest exceptions in a forward-compatible way.
|
|
*
|
|
* @concrete-extensible
|
|
*/
|
|
class PhutilProxyException extends Exception {
|
|
|
|
private $previousException;
|
|
|
|
public function __construct($message, $previous, $code = 0) {
|
|
$this->previousException = $previous;
|
|
|
|
// This may be an "Exception" or a "Throwable". The "__construct()" method
|
|
// for the Exception is documented as taking an Exception, not a Throwable.
|
|
// Although passing a Throwable appears to work in PHP 7.3, don't risk it.
|
|
$is_exception = ($previous instanceof Exception);
|
|
|
|
if (version_compare(PHP_VERSION, '5.3.0', '>=') && $is_exception) {
|
|
parent::__construct($message, $code, $previous);
|
|
} else {
|
|
parent::__construct($message, $code);
|
|
}
|
|
}
|
|
|
|
public function getPreviousException() {
|
|
// NOTE: This can not be named "getPrevious()" because that method is final
|
|
// after PHP 5.3. Similarly, the property can not be named "previous"
|
|
// because HPHP declares a property with the same name and "protected"
|
|
// visibility.
|
|
return $this->previousException;
|
|
}
|
|
|
|
}
|