Converts an exception into a WP_Error with a structured error code and message.
Description
This method maps different exception types to specific WP_Error codes and HTTP status codes.
The presence of the status codes means these WP_Error objects can be easily used in REST API responses or other contexts where HTTP semantics are relevant.
Parameters
$eExceptionrequired- The exception to convert.
Source
private function exception_to_wp_error( Exception $e ): WP_Error {
if ( $e instanceof NetworkException ) {
$error_code = 'prompt_network_error';
$status_code = 503;
} elseif ( $e instanceof ClientException ) {
// `ClientException` uses HTTP status codes as exception codes, so we can rely on them.
$error_code = 'prompt_client_error';
$status_code = $e->getCode() ? $e->getCode() : 400;
} elseif ( $e instanceof ServerException ) {
// `ServerException` uses HTTP status codes as exception codes, so we can rely on them.
$error_code = 'prompt_upstream_server_error';
$status_code = $e->getCode() ? $e->getCode() : 500;
} elseif ( $e instanceof TokenLimitReachedException ) {
$error_code = 'prompt_token_limit_reached';
$status_code = 400;
} elseif ( $e instanceof InvalidArgumentException ) {
$error_code = 'prompt_invalid_argument';
$status_code = 400;
} else {
$error_code = 'prompt_builder_error';
$status_code = 500;
}
return new WP_Error(
$error_code,
$e->getMessage(),
array(
'status' => $status_code,
'exception_class' => get_class( $e ),
)
);
}
Changelog
| Version | Description |
|---|---|
| 7.0.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.