Adding Custom UI Exceptions
Atoti Limits allows you to display custom error messages in the UI.
To do this, return a response type in the structure of a ProblemDetail object.
Steps
- Add a method annotated with
@ExceptionHandler
in a class annotated with@RestControllerAdvice
or@ControllerAdvice
. The@ExceptionHandler
annotation should contain the classes of exceptions you’d like to handle. - Make that method return a
ProblemDetail
object - Throw your desired exception from within the application. Note that most common exceptions are already handled in
RestExceptionHandlerControllerAdvice
andLimitsProcessExceptionHandler
.
How it works
For an example of how we do this on the server side in Atoti Limits see RestExceptionHandlerControllerAdvice
, which looks as follows:
@RestControllerAdvice
public class RestExceptionHandlerControllerAdvice {
@ExceptionHandler(LimitsRestServiceException.class)
ProblemDetail handleRestServiceException(LimitsRestServiceException ex) {
return ProblemDetail.forStatusAndDetail(ex.getStatusCode(), ex.getMessage());
}
}
This simple class is annotated with @RestControllerAdvice
, meaning it will catch exceptions thrown from REST methods. In reality, it inherits from the global
exception handler @ControllerAdvice
, which handles exceptions thrown from any method.
The single method in RestExceptionHandlerControllerAdvice
catches the generic LimitsRestServiceException
using the @ExceptionHandler
annotation and returns a ProblemDetail
object, which our UI will parse appropriately.
The ProblemDetail
object accepts a map of variables which may hold custom fields of interest. Note that the @ExceptionHandler
annotation accepts multiple
classes of exception for a single method.
For more server-side information, see the Spring Framework Documentation: