handle method

Future<void> handle(
  1. Request req,
  2. ResponseContract res,
  3. NextFunction next
)

Implementation

Future<void> handle(
  Request req,
  ResponseContract res,
  NextFunction next,
) async {
  try {
    await next();
  } catch (error, stackTrace) {
    // Handle specific exception types
    final handler = Khadem.make<ExceptionHandlerContract>();
    final result = await handler.handle(error, stackTrace);

    // Send response
    res.status(result.statusCode).problem(
      title: result.title,
      status: result.statusCode,
      detail: result.message,
      type: result.type,
      instance: result.instance,
      extensions: {
        if (result.details != null) 'details': result.details,
        if (result.stackTrace != null)
          'stack_trace': result.stackTrace.toString(),
        ...result.extensions,
      },
    );
  }
}