Exception Handling in a Web Project
Exception handling is a common function in a web project. In this post, I will cover the basic principles of how to do exception handling in a web project.
The Process
- Create an ErrorEnum to represent your error codes and messages.
 - Create a custom Exception class. The class has an ErrorEnum type field.
 - Create an Exception or Error object and pass an ErrorEnum to the constructor.
 - Throw the error object in somewhere.
 - The global exception handler processes the error. 
- Get the value of the ErrorEnum type field from the error object. And convert the ErrorEnum to an error model.
 - Set a appropriate HTTP response status code.
 - Return the error model to the client.
 
 
Details
ErrorEnum: To represent error code and messages
Principles
- Put all code and messages in a single file or single directory. It’s easy to maintain.
 - Using string or number to represent error code. I prefer using string.
 - Error messages may need to use internationalization (i18n).
 
In Java, you can use an enum to do this. For example:
public enum ErrorEnum {  | 
Custom exception class: Support to throw a custom exception object
It’s a custom Exception class that has an ErrorEnum field.
Global exception handler: Handle uncaught exceptions
It sets an appropriate HTTP response status code and responds to an error model object as a JSON.
Error model: a POJO to pass the error information
It’s a POJO class that has errorCode and errorMessage fields.
Appendixes
Common HTTP response status codes
| Status code | Description | 
|---|---|
| 200 | OK | 
| 201 | Created | 
| 204 | No Content | 
| 400 | Bad Request | 
| 401 | Unauthorized | 
| 403 | Forbidden | 
| 404 | Not Found | 
| 405 | Method Not Allowed | 
| 408 | Request Timeout | 
| 500 | Internal Server Error | 
| 502 | Bad Gateway | 
| 504 | Gateway Timeout |