- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
int code = 300;
if (
ex is Exceptions.ApiErrorNotFoundException ||
ex is Exceptions.CardAuthHistoryNotFoundException ||
ex is Exceptions.CardNotFoundException ||
ex is Exceptions.CardStateNotFoundException ||
ex is Exceptions.CurrencyNotFoundException ||
ex is EmailTemplateNotFoundException ||
ex is Exceptions.ExchangeRateNotFoundException ||
ex is Exceptions.InfoBlockNotFoundException ||
ex is InvoiceNotFoundException ||
ex is Exceptions.InvoiceStateNotFoundException ||
ex is Exceptions.ManagerNotFoundException ||
ex is Exceptions.PasswordRecoveryNotFoundException ||
ex is Exceptions.PayCommissionNotFoundException ||
ex is Exceptions.PaymentStateNotFoundException ||
ex is Exceptions.PaymentTypeNotFoundException ||
ex is Exceptions.PaySystemNotFoundException ||
ex is Exceptions.PersonNotFoundException ||
ex is Exceptions.SecretWordNotFoundException ||
ex is ShopNotFoundException ||
ex is SiteNotFoundException ||
ex is Exceptions.SysSettingsNotFoundException ||
ex is Exceptions.SysWalletNotFoundException ||
ex is Exceptions.TariffNotFoundException ||
ex is Exceptions.UserNotFoundException ||
ex is Exceptions.UserParamsNotFoundException ||
ex is Exceptions.WorldCurrencyNotFoundException ||
ex is Exceptions.WorldExchangeRateNotFoundException
)
{
code = 504;
}
мне может самому придется нечто подобное (на С++) наговнокодить скоро....
А теперь про говнокод. Насколько я понимаю, тип double и тип string никогда не вызовут никакого события, тем более ButtonClick, поэтому из массива их исключаем. Остается один элемент, а зачем тогда массив?
Согласен. А как это изобразить в коде?
>тип double и тип string никогда не вызовут никакого события
Не обращаем внимания, это для объёма :)
public static bool TypeInherit(Type T, Type Parent)
{
while (true)
{
if (T == Parent) return true;
if (T == typeof(object)) return false;
T = T.BaseType;
}
}
T.Equals(Parent) || T.IsSubclassOf(Parent)
Помечу для себя, что ты знаток шарпов!
Я очень не люблю людей, которые не умеют пользоваться поиском по документации.
Обычно лучше работает Type.IsAssignableFrom
ибо оно поддерживает и интерфейсы то же.
Тогда достаточно было бы сделать одну проверку по родителю.
try { } catch (ServerItemNotFoundException ex) { ... }
постоянно перехуячивать иерархии наследования что бы из еще одной функции обработать ошибку - это говно.
В конце концов, исключения могут реализовывать интерфейсы. Делайте IServerItemNotFound {} - получаете интерфейс-маркер. По маркерам можно черта лысого отследить.
тем более что изменения иерархии наследования на средних/крупных проектах в поздних фазах разработки просто запрещено - как раз тогда когда такие проблемы и всплывают.
то что нечто тривиальное типа "if (rc == ECODE1 || rc == ECODE2)" не имеет тривиального аналога в эксепшенах IMO есть большое говно на уровне самих языков. очевидно становится в оссобенности тогда когда ошибки нужно реально обрабатывать, а не просто какой тупой мессадж бокс на экран выплевывать.
А так это говнохлам. Иногда такого нагромождения в коде не избежать ((
Или кто знает как?
вообще от таких конструкций всегда веет поносом отчаянием - дедлайн уж близко, а оно нифига