AdapterError Class
A AdapterError
is used by an adapter to signal that an error occurred
during a request to an external API. It indicates a generic error, and
subclasses are used to indicate specific error states. The following
subclasses are provided:
InvalidError
TimeoutError
AbortError
UnauthorizedError
ForbiddenError
NotFoundError
ConflictError
ServerError
To create a custom error to signal a specific error state in communicating
with an external API, extend the AdapterError
. For example, if the
external API exclusively used HTTP 503 Service Unavailable
to indicate
it was closed for maintenance:
import AdapterError from '@ember-data/adapter/error';
export default AdapterError.extend({ message: "Down for maintenance." });
This error would then be returned by an adapter's handleResponse
method:
import JSONAPIAdapter from '@ember-data/adapter/json-api';
import MaintenanceError from './maintenance-error';
export default JSONAPIAdapter.extend({
handleResponse(status) {
if (503 === status) {
return new MaintenanceError();
}
return this._super(...arguments);
}
});
And can then be detected in an application and used to send the user to an
under-maintenance
route:
import Route from '@ember/routing/route';
import MaintenanceError from '../adapters/maintenance-error';
export default Route.extend({
actions: {
error(error, transition) {
if (error instanceof MaintenanceError) {
this.transitionTo('under-maintenance');
return;
}
// ...other error handling logic
}
}
});