1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-22 14:52:40 +01:00
phorge-arcanist/src/error/PhutilProxyException.php
epriestley 9b74cb4ee6 Fully merge "libphutil/" into "arcanist/"
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
2020-02-12 15:17:38 -08:00

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;
}
}