Программирование на основе исключений C # - PullRequest
0 голосов
/ 07 мая 2018

Хотя не очень популярен в микро-сервисах и архитектуре Restful, (я полагаю).Мы предпочитаем повышать изящные исключения для бизнеса с помощью пользовательских классов исключений, полученных из ApplicationException.

Существует ли какой-либо механизм для самостоятельного объявления, by some compile feature, что Ex1, Ex2, Ex3 являются возможными бизнес-исключениями, выдаваемыми class service.

Если вы уже знакомы с WCF, надеюсь, вы его получили.Я что-то на линии WCF (Исключительный контракт)

Пример:

public class BlobChecksumMatchException : ApplicationException
{
    public BlobChecksumMatchException(string msg) : base(msg)
    {

    }
}

РЕДАКТИРОВАТЬ: (Не говоря уже об исключительной базе, конечно, может быть брошено по любой причине,Я просто смотрю на предопределенные классы бизнес-исключений)

1 Ответ

0 голосов
/ 07 мая 2018

Нет такого встроенного механизма в C # или .NET. Тем не менее, у вас есть несколько вариантов обхода:

1) Если эта информация предназначена для потребления человеком, вы можете использовать комментарии к документации XML , как указано Андреасом Зитой.

2) Если вам нужен машиночитаемый механизм, вы можете объявить пользовательский атрибут «ThrowsException» и применить его к своему классу или методам, а затем извлечь эти , используя отражение :

class MyBusinessClass
{
  [ThrowsException(typeof(Ex1))]
  [ThrowsException(typeof(Ex2))]
  public void DoSomething() {}
}

Обратите внимание, что рефлексия стоит дорого, в зависимости от ваших требований к производительности, вам может понадобиться реализовать какой-то механизм кэширования для этой информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...