@embiid

Как вывести исключения для опеределенного исключения?

public class AuthFilter : ExceptionFilterAttribute
    {
        public override void OnException(ExceptionContext context)
        {
            if (context.Exception is DataException || context.Exception is DublicatelException)
            {
                context.Result = new BadRequestObjectResult("Fields are not filled.");
                //context.Result = new BadRequestObjectResult("Already in use.");
            }
            else if (context.Exception is NotFoundException)
            {
                context.Result = new NotFoundObjectResult("Not found.");
            }
        }
    }


Как лучше выбросить экспешн для DataException и DublicatelException? При DataException - Fields are not filled;
DublicatelException - Already in use.
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
@cicatrix
было бы большой ошибкой думать
Где-то всё равно выбор придётся делать.
1) Можно сделать своё исключение, наследуемое от System.Exception и заворачивать внутрь исключение, которое выбросилось
2) Сообщение об ошибке можно передавать в теле исключения (message)

try
    {  
       /// 
    }
    catch(InvalidOperationException ex)
    {
        throw new MyCustomException("Случилось страшное", ex);
    }
    catch(DataException ex)
    {
        throw new MyCustomException("Не менее страшное", ex);
    }
    catch (Exception ex)
    {
        throw new MyCustomException("Тут вообще хз что произошло", ex);
    }

При этом, первоначальное исключение будет в свойстве InnerException
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы