Class AdapterError
public
Defined in:
../adapter/addon/error.js:7
Module:
@ember-data/adapter/error
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:
app/adapters/maintenance-error.js
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:
app/adapters/application.js
import JSONAPIAdapter from '@ember-data/adapter/json-api';
import MaintenanceError from './maintenance-error';
export default class ApplicationAdapter extends JSONAPIAdapter {
handleResponse(status) {
if (503 === status) {
return new MaintenanceError();
}
return super.handleResponse(...arguments);
}
}
And can then be detected in an application and used to send the user to an
under-maintenance
route:
app/routes/application.js
import Route from '@ember/routing/route';
import MaintenanceError from '../adapters/maintenance-error';
export default class ApplicationRoute extends Route {
actions: {
error(error, transition) {
if (error instanceof MaintenanceError) {
this.transitionTo('under-maintenance');
return;
}
// ...other error handling logic
}
}
}