Back to questions
Senior
8
Как обрабатывать бизнес-ошибки и возвращать правильные HTTP-коды клиенту?
Companies where asked
Сбербанк
Answer from AI
sobes.tech AI
Для обработки бизнес-ошибок и возврата корректных HTTP-кодов в C# обычно используют кастомные исключения и middleware или фильтры для централизованной обработки ошибок.
Пример подхода:
- Создайте собственные классы исключений для разных типов бизнес-ошибок:
public class NotFoundException : Exception {}
public class ValidationException : Exception {}
-
В контроллерах выбрасывайте эти исключения при необходимости.
-
Используйте 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, а клиент получает понятные и корректные коды ответа в зависимости от ситуации.