Sobes.tech
Back to questions
Senior
8

Как обрабатывать бизнес-ошибки и возвращать правильные HTTP-коды клиенту?

Companies where asked
Сбербанк

Answer from AI

sobes.tech AI

Для обработки бизнес-ошибок и возврата корректных HTTP-кодов в C# обычно используют кастомные исключения и middleware или фильтры для централизованной обработки ошибок.

Пример подхода:

  1. Создайте собственные классы исключений для разных типов бизнес-ошибок:
public class NotFoundException : Exception {}
public class ValidationException : Exception {}
  1. В контроллерах выбрасывайте эти исключения при необходимости.

  2. Используйте middleware для перехвата исключений и формирования HTTP-ответа:

app.Use(async (context, next) => {
    try
    {
        await next();
    }
    catch (NotFoundException)
    {
        context.Response.StatusCode = StatusCodes.Status404NotFound;
        await context.Response.WriteAsync("Resource not found");
    }
    catch (ValidationException ex)
    {
        context.Response.StatusCode = StatusCodes.Status400BadRequest;
        await context.Response.WriteAsync(ex.Message);
    }
    catch (Exception)
    {
        context.Response.StatusCode = StatusCodes.Status500InternalServerError;
        await context.Response.WriteAsync("Internal server error");
    }
});

Таким образом, бизнес-логика отделена от обработки HTTP, а клиент получает понятные и корректные коды ответа в зависимости от ситуации.