feat(api, domain, core): Глобальные модели ошибок. ConfigureValidator - валидатор контроллеров. GlobalExceptionHandler - глобальный обработчик ошибок в API.
This commit is contained in:
96
PARR.Domain/Exceptions/CustomExceptions.cs
Normal file
96
PARR.Domain/Exceptions/CustomExceptions.cs
Normal file
@@ -0,0 +1,96 @@
|
||||
namespace PARR.Domain.Exceptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Базовый класс для всех ошибок
|
||||
/// </summary>
|
||||
public abstract class BaseException : Exception
|
||||
{
|
||||
protected BaseException(string message) : base(message) { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ошибка БД. 502
|
||||
/// </summary>
|
||||
public class DbErrorException : BaseException
|
||||
{
|
||||
/// <summary>
|
||||
/// Ошибка БД.
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public DbErrorException(string message) : base(message) { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Объект не найден. 404
|
||||
/// </summary>
|
||||
public class NotFoundException : BaseException
|
||||
{
|
||||
/// <summary>
|
||||
/// Объект не найден.
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public NotFoundException(string message) : base(message) { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ошибка валидации. 400.
|
||||
/// Использовать эту ошибку, если не подходит валидация от Fluent (ValidationException)
|
||||
/// </summary>
|
||||
public class AppValidationException : BaseException
|
||||
{
|
||||
/// <summary>
|
||||
/// Ошибка валидации.
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public AppValidationException(string message) : base(message) { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Объект уже существует. 409
|
||||
/// </summary>
|
||||
public class AlreadyExistsException : BaseException
|
||||
{
|
||||
/// <summary>
|
||||
/// Объект уже существует.
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public AlreadyExistsException(string message) : base(message) { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ошибка при работе с внешним сервисом. 502
|
||||
/// </summary>
|
||||
public class ExternalServiceException : BaseException
|
||||
{
|
||||
/// <summary>
|
||||
/// Ошибка при работе с внешним сервисом.
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public ExternalServiceException(string message) : base(message) { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Пользователь не аутентифицирован. 401
|
||||
/// </summary>
|
||||
public class UnauthorizedException : BaseException
|
||||
{
|
||||
/// <summary>
|
||||
/// Пользователь не аутентифицирован.
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public UnauthorizedException(string message) : base(message) { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Доступ запрещен. 403.
|
||||
/// Пользователь вошел в систему (мы знаем, кто он), но у него нет прав на конкретное действие или объект.
|
||||
/// </summary>
|
||||
public class ForbiddenException : BaseException
|
||||
{
|
||||
/// <summary>
|
||||
/// Доступ запрещен.
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public ForbiddenException(string message) : base(message) { }
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Common\Rabbit\Events\" />
|
||||
<Folder Include="Exceptions\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
Reference in New Issue
Block a user