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

  1. 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.
  2. Make that method return a ProblemDetail object
  3. Throw your desired exception from within the application. Note that most common exceptions are already handled in RestExceptionHandlerControllerAdvice and LimitsProcessExceptionHandler.

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: