handleError method

Future handleError(
  1. String handler,
  2. dynamic exception,
  3. StackTrace stacktrace, {
  4. HttpRequest? request,
  5. String? requestBody,
})

Implementation

Future handleError(String handler, exception, StackTrace stacktrace, {HttpRequest? request, String? requestBody}) async {
  if (debug) {
    print('###############################################################');
    print('###############         Unhandled Error         ###############');
    print(exception.toString());
    print('###############           Stack Trace           ###############');
    print(stacktrace.toString());
    print('###############           Catch Trace           ###############');
    try {
      throw Exception("handle trace");
    } catch (e, stack2) {
      print(stack2.toString());
    }
    print('###############################################################');
  }

  String debugRequest = '';
  if (request != null) {
    debugRequest += """${request.method} ${request.requestedUri}\n${request.headers.toString()}\n""";
  }
  if (requestBody != null) {
    debugRequest += requestBody;
  }
  String location = stacktrace.toString().split('\n').first;

  await db.query(
    'INSERT INTO run_errors SET '
    '`app_id` = ?, '
    '`handler` = ?, '
    '`location` = ?, '
    '`status` = "new", '
    '`first_time` = NOW(), '
    '`first_message` = ?, '
    '`first_stack` = ?, '
    '`first_request` = ? '
    ' ON DUPLICATE KEY UPDATE '
    '`status` = VALUES(`status`), '
    '`current_count` = `current_count` + 1, '
    '`total_count` = `total_count` + 1, '
    '`last_time` = VALUES(`first_time`), '
    '`last_message` = VALUES(`first_message`), '
    '`last_stack` = VALUES(`first_stack`), '
    '`last_request` = VALUES(`first_request`)',
    [serviceId, handler, location, exception.toString(), stacktrace.toString(), debugRequest],
  );
}