- 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) { } }
Говно или не говно? Мне кажется первое
TauSigma 19.08.2014 11:45 # 0
Может, на разные типы исключений запланировано разное поведение.
В принципе, даже отнаследовано правильно.
Т.к., помнится, ещё давно читал статью, что наследовать исключения желательно от исключений пользовательского уровня, а не от базового класса исключений.
Т.е. в оригинале, автор написал даже грамотнее, чем вод этот хардкор:
http://msdn.microsoft.com/en-us/library/87cdya3t%28v=vs.110%29.aspx
Smekalisty 19.08.2014 12:00 # 0
Не, дело не в том, от кого наследоваться в исключениях, а в том, что наследоваться нужно чтобы что-то переопередлить или добавить, а не наследование ради наследования.
TauSigma 19.08.2014 12:15 # 0
TauSigma 19.08.2014 12:16 # −1
kegdan 19.08.2014 11:54 # +1
Да и отлаживать проще - сразу знаешь откуда исключение - из стандартной либы или из твоего кода
Smekalisty 19.08.2014 12:13 # +3
Для этого и есть базовый класс и есть сообщение в нем
kegdan 19.08.2014 12:23 # +1
Сгенерируй, сгенерируй его еще раз!
Пиши свою узкоспециализированную либу с общими исключениями, что бы нихуя не понимал, почему оно упало. делаешь нех, и вдруг внутри произошла ошибка вычислений? Выкидывай ArithmeticException без обьяснений! Это же такое ожидаемое поведение! Видишь, я тоже утрирую! Я живу полноценной жизнью!
Smekalisty 19.08.2014 12:11 # +2
try
{
// 140 строк кода, где-то в середине
if (что-то)
throw new UnathorizedDevice();
}
catch (UnathorizedDevice)
{
G.PrintRed("Unathorized {0}", info);
}
Сам кидаю, сам ловлю!
someone 19.08.2014 13:01 # +2
kegdan 19.08.2014 14:16 # +1
TauSigma 19.08.2014 15:07 # +1
Ведь, взрослые дяди учили, что goto использовать нехорошо.
kegdan 19.08.2014 15:12 # 0
TauSigma 19.08.2014 16:03 # 0
Ну, да, throw как-бы подразумевает, что его поймают выше по стеку.
А не в текущем методе...
>Goto нинужно
Раз всё ещё не отказались, значит всё ещё нужен (И это касается не только switch/case).
http://stackoverflow.com/questions/6545720/does-anyone-still-use-goto-in-c-sharp-and-if-so-why
Но и шанс перекусить макаронами повышается...
1024-- 19.08.2014 16:25 # +1
kegdan 19.08.2014 16:37 # 0
1024-- 19.08.2014 16:42 # 0
kegdan 19.08.2014 16:44 # 0
1024-- 19.08.2014 19:37 # 0
roman-kashitsyn 19.08.2014 16:49 # +1
Обычно это называют unit, в Applicative есть неплохая алтернатива - pure (т.к. под Unit уже принято подразумевать ()).
guest 19.08.2014 19:41 # −5
eth0 19.08.2014 19:45 # +5
guest 19.08.2014 20:37 # −2
guest 19.08.2014 20:41 # −4
Qwertiy 19.08.2014 22:17 # +2