handleAngelHttpException method

Future handleAngelHttpException(
  1. AngelHttpException e,
  2. StackTrace st,
  3. RequestContext? req,
  4. ResponseContext? res,
  5. Request request,
  6. Response response, {
  7. bool ignoreFinalizers = false,
})

Handles an AngelHttpException.

Implementation

Future handleAngelHttpException(
    AngelHttpException e,
    StackTrace st,
    RequestContext? req,
    ResponseContext? res,
    Request request,
    Response response,
    {bool ignoreFinalizers = false}) {
  if (req == null || res == null) {
    try {
      app.logger.severe('500 Internal Server Error', e, st);
      setStatusCode(response, 500);
      writeStringToResponse(response, '500 Internal Server Error');
      closeResponse(response);
    } catch (e) {
      app.logger.severe('500 Internal Server Error', e);
    }
    return Future.value();
  }

  Future handleError;

  if (!res.isOpen) {
    handleError = Future.value();
  } else {
    res.statusCode = e.statusCode;
    handleError =
        Future.sync(() => app.errorHandler(e, req, res)).then((result) {
      return app.executeHandler(result, req, res).then((_) => res.close());
    });
  }

  return handleError.then((_) => sendResponse(request, response, req, res,
      ignoreFinalizers: ignoreFinalizers == true));
}