public static function exceptionHandler($app, $exception)
 {
     $response = $app->response();
     $response->header('Content-type', 'application/json');
     $httpCode = 500;
     $data = [];
     /**
      * Directus\Acl\Exception\AclException & subclasses
      */
     if ($exception instanceof AclException || is_subclass_of($exception, 'Directus\\Acl\\Exception\\AclException')) {
         $httpCode = 403;
         $data = ['message' => $exception->getMessage()];
     } elseif ($exception instanceof RelationshipMetadataException) {
         $httpCode = 424;
         $data = ['message' => $exception->getMessage()];
     } elseif ($exception instanceof CustomUiValidationError) {
         $httpCode = 422;
         $data = ['message' => $exception->getMessage()];
     } elseif ($exception instanceof DuplicateEntryException) {
         $httpCode = 409;
         $data = ['message' => $exception->getMessage()];
     } else {
         $data = ['message' => __t('internal_server_error')];
         if ('production' !== DIRECTUS_ENV) {
             $data = ['code' => $exception->getCode(), 'class' => get_class($exception), 'message' => $exception->getMessage(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), 'trace' => $exception->getTrace(), 'traceAsString' => $exception->getTraceAsString()];
         }
     }
     $data = @json_encode($data);
     if ('production' !== DIRECTUS_ENV) {
         $data = JsonView::format_json($data);
     }
     http_response_code($httpCode);
     header('Content-type: application/json');
     echo $data;
     exit;
 }