Error handling in the REST API is fully based on HTTP error codes. As a web developer, you are probably familiar with the most common ones: 401 Unauthorized, 404 Not Found or 500 Internal Server Error. The REST API uses those, along with a few more, to allow proper error handling.
The complete list of error codes used and the conditions in which they apply are specified in the reference documentation.
A few error codes apply to most resources (if they are applicable)
The server encountered an unexpected condition, usually an exception, which prevented it from fulfilling the request: database down, permissions or configuration error.
Returned when the requested method has not yet been implemented. As of eZ Publish 5.0, most of user, group, content, location and content type have been implemented. Some of their methods, as well as other features, may return a 501.
Returned when the request failed because the request object was not found. You should be familiar with this one.
Returned when the requested REST API resource doesn't support the HTTP verb that was used.
Returned when an accept header sent with the requested isn't supported.
It is up to you, in your client implementation, to handle those codes by checking if an error code (4xx or 5xx) was returned instead of the expected 2xx or 3xx.