- 1
- 2
- 3
class UnathorizedDevice : ArgumentException { public UnathorizedDevice() : base() { } }
class LocalException : ArgumentException { public LocalException(string message) : base(message) { } }
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+134
class UnathorizedDevice : ArgumentException { public UnathorizedDevice() : base() { } }
class LocalException : ArgumentException { public LocalException(string message) : base(message) { } }
Говно или не говно? Мне кажется первое
Может, на разные типы исключений запланировано разное поведение.
В принципе, даже отнаследовано правильно.
Т.к., помнится, ещё давно читал статью, что наследовать исключения желательно от исключений пользовательского уровня, а не от базового класса исключений.
Т.е. в оригинале, автор написал даже грамотнее, чем вод этот хардкор:
http://msdn.microsoft.com/en-us/library/87cdya3t%28v=vs.110%29.aspx
Не, дело не в том, от кого наследоваться в исключениях, а в том, что наследоваться нужно чтобы что-то переопередлить или добавить, а не наследование ради наследования.
Да и отлаживать проще - сразу знаешь откуда исключение - из стандартной либы или из твоего кода
Для этого и есть базовый класс и есть сообщение в нем
Сгенерируй, сгенерируй его еще раз!
Пиши свою узкоспециализированную либу с общими исключениями, что бы нихуя не понимал, почему оно упало. делаешь нех, и вдруг внутри произошла ошибка вычислений? Выкидывай ArithmeticException без обьяснений! Это же такое ожидаемое поведение! Видишь, я тоже утрирую! Я живу полноценной жизнью!
try
{
// 140 строк кода, где-то в середине
if (что-то)
throw new UnathorizedDevice();
}
catch (UnathorizedDevice)
{
G.PrintRed("Unathorized {0}", info);
}
Сам кидаю, сам ловлю!
Ведь, взрослые дяди учили, что goto использовать нехорошо.
Ну, да, throw как-бы подразумевает, что его поймают выше по стеку.
А не в текущем методе...
>Goto нинужно
Раз всё ещё не отказались, значит всё ещё нужен (И это касается не только switch/case).
http://stackoverflow.com/questions/6545720/does-anyone-still-use-goto-in-c-sharp-and-if-so-why
Но и шанс перекусить макаронами повышается...
Обычно это называют unit, в Applicative есть неплохая алтернатива - pure (т.к. под Unit уже принято подразумевать ()).