У меня есть исключение членства, которое выглядит следующим образом:Является ли это правильным способом использования исключений?
public enum MembershipError
{
EmailNotFound,
EmailNotConfirmed,
IncorrectPassword,
EmailExists
}
public class MembershipException : ApplicationException
{
public MembershipError MembershipError { get; set; }
public MembershipException(MembershipError membershipError)
: base(Enum.GetName(typeof (MembershipError), membershipError))
{
MembershipError = membershipError;
}
}
Должен ли я использовать перечисление в моем исключении или сделать исключение для каждого перечисления? Потому что тогда я был бы положить логики при отлове исключения, как это:
try
{
}
catch (MembershipException exception)
{
switch (exception.MembershipError)
{
case MembershipError.EmailExists:
break;
//etc.
}
}
Моего слоя сервис генерирует эти исключения, веб-слой/в действие улавливает это, генерировать правильный JSON и вернуть его к просмотру. Предлагайте альтернативу, пожалуйста?
Я собираюсь объединить эти 2 'out' в 1 класс и вернуть его. –
@Lolcoder: Но как насчет возвращаемого значения bool? Это своего рода использование методов Try. Кроме того, подумайте об использовании «Tuple», а не о создании нового класса. – Brian