When a LocalizedHttpException is created with a DataMessageValue, show the error code to clients (named 'errorKey' to avoid confusion with the HTTP error code) so it's easier for them to gather debugging data, have specific handling for certain errors etc. For plain MessageValue, use the message key for lack of a better option. This is roughly identical to how error handling in the Action API works. Also tighten up HttpException's $errorData / getData() parameter to be strictly an array - it doesn't make any sense to pass null for data. Technically this is a B/C break but passing null is an exceedingly unlikely usage pattern, and there is no instance of it in codesearch. Change-Id: I3626febed6a0402361a461d96942a863fa230ed0
35 lines
677 B
PHP
35 lines
677 B
PHP
<?php
|
|
|
|
namespace MediaWiki\Rest;
|
|
|
|
/**
|
|
* This is the base exception class for non-fatal exceptions thrown from REST
|
|
* handlers. The exception is not logged, it is merely converted to an
|
|
* error response.
|
|
*
|
|
* @newable
|
|
*/
|
|
class HttpException extends \Exception {
|
|
|
|
/** @var array */
|
|
private array $errorData;
|
|
|
|
/**
|
|
* @stable to call
|
|
*
|
|
* @param string $message
|
|
* @param int $code
|
|
* @param array $errorData
|
|
*/
|
|
public function __construct( $message, $code = 500, $errorData = [] ) {
|
|
parent::__construct( $message, $code );
|
|
$this->errorData = $errorData;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getErrorData(): array {
|
|
return $this->errorData;
|
|
}
|
|
}
|