private static Task HandleExceptionAsync(HttpContext context, Exception ex)
        {
            var errors = new DefaultErrors();

            HandleNotFoundException(context, ex, errors);
            HandleConflictException(context, ex, errors);
            HandleClientException(context, ex, errors);
            HandleUnknownExceptions(context, ex, errors);

            var json = JsonConvert.SerializeObject(errors);

            return(context.Response.WriteAsync(json));;
        }
        private static void HandleClientException(HttpContext context, Exception ex, DefaultErrors errors)
        {
            if (!(ex is ClientException))
            {
                return;
            }
            const HttpStatusCode code = HttpStatusCode.InternalServerError;

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)code;
            var clientException = (ClientException)ex;

            errors.Reject(clientException.ErrorCode, clientException.Message, clientException.Message);
        }
        private static void HandleNotFoundException(HttpContext context, Exception ex, DefaultErrors errors)
        {
            if (!(ex is NotFoundException))
            {
                return;
            }
            const HttpStatusCode code = HttpStatusCode.NotFound;
            var result = JsonConvert.SerializeObject(new { error = ex.Message });

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)code;
            var clientException = (ClientException)ex;

            errors.Reject(clientException.ErrorCode, clientException.Message, clientException.Message);
        }
        private static void HandleUnknownExceptions(HttpContext context, Exception ex, DefaultErrors errors)
        {
            if (errors.ErrorList.Count > 1)
            {
                return;
            }
            const HttpStatusCode code = HttpStatusCode.InternalServerError;

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)code;
            errors.Reject("UNKNOWN", "Unknown Exception Occurred");
        }