- 1
- 2
- 3
- 4
- 5
- 6
- 7
Exception Myex;
int responseVal = HelperMethods.DoPost(url, postdata, "text/xml; charset=utf-8", ref xmlResponse, null, out Myex);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(new StringReader(xmlResponse));
string StatusID = xmlDoc.ChildNodes[1].ChildNodes[0].FirstChild.Value;
if (StatusID.ToLower() != "0")
guest 03.01.2011 15:24 # +1
Уморил. :D
guest 03.01.2011 15:33 # +1
и остальное излишне
anmiles 03.01.2011 15:37 # 0
Dummy00001 03.01.2011 17:07 # +1
Myex здесь так создается/передается что бы DoPost() вместо бросания эксепшна, просто его возвращал в переменной?
выглядит интересным компромисом для интерфейсов что бы эксепшены бросались опционально.
guest 03.01.2011 17:10 # 0
да
>Myex здесь так создается
не создаётся, лишь объявляется
будет создана лишь в DoPost, и то не обязательно
если не создаст, то вернёт null
Dummy00001 03.01.2011 17:13 # +3
и в лучших традициях ГК эта эксепшн после вызова не проверяется... ГК однозначно.
guest 03.01.2011 17:14 # 0
не выглядит
тогда теряется весь смысл исключений
в таком случае проще вернуть экземпляр класса ошибки, код ошибки, или HRESULT
на тот случай, если я не понял - можте привести пример для случая с интерфейсом
Dummy00001 03.01.2011 17:23 # −1
(С++) у нас в некоторых интерфейсах народ передает в функцию выходным параметром строка. вызываемая функция, в случае ошибки ложит в строку сообщени(е,я) об ошибке. с одной стороны требования производительности не позляют всегда бросать эксепшены, с другой стороны в значении возвращаемым функцией нет дырок для индикации ошибки.
вообщем, как бы у нас уже подобное говно испольнуется, только вместо эксепшена используется строка. меня привлекает возможность опционально бросать эксепшн ИЛИ не бросать эксепшн, но пользоватся тем же самым объектом (а не тупой строкой) для индикации ошибки.
guest 03.01.2011 17:29 # 0
если действительно беспокоит скорость, то возвращали бы код ошибки типа enum, а не строки
это какая-то полумера
как вы эти ошибки потом обрабатываете\ отлавливаете? неужели сравниваете строку на совпадение? Х_Х
Dummy00001 03.01.2011 18:39 # −1
с перформансом там проблема что в некоторых реализациях С++ бросание эксепшенов очень дорого.
народ не хочет напрягатся конвертацией enum -> sting, или какой GetLastError(), поэтому сразу возвращают строку.
типа вместо эксепшен со строкой энкапсулированой, используется просто строка.
> как вы эти ошибки потом обрабатываете\ отлавливаете? неужели сравниваете строку на совпадение? Х_Х
если строка пустая, значит вызов функции был успешен. если не пустая - тогда ошибка и строка прямиком идет в лог. как правило если функция обломалась, тогда и вся транзакция обламывается.
вообщем, на самом деле то строка не так далеко от эксепшена: по сути в 99% случаев из эксепшена берется только содержимое `getMessage();`. только что выглядит в коде говновато. можно даже было бы сделать что если строка есть NULL то бросать эксепшн. но в том коде нет (потому что не нужно было) своего класса эксепшена.
guest 03.01.2011 18:51 # 0
я знаю
и всё же использование строк, как ошибок - это полумера и ошибка проектирования
если однажды понадобится это переписать на другой механизм работы с ошибками - можно легко запариться
guest 03.01.2011 18:54 # 0
самописный велосипед, std::string или указатель на символ (PxChar)?
Dummy00001 03.01.2011 19:08 # +3
да граблями там все разложено это факт.
guest 03.01.2011 19:35 # +1
во врмя эксепшена происходит ещё 9ть и они все в десятером спускаются "до дна стека" о_О
С++ такого не позволяет
guest 03.01.2011 19:37 # 0
?
guest 03.01.2011 18:59 # 0
злейшее зло
многопоточные приложения при неверной реализации очень веселят в таких ситуациях
absolut 03.01.2011 23:44 # −4
Каждому свой last error
guest 03.01.2011 23:50 # +2
2)
>многопоточные приложения при неверной реализации очень веселят
Обратите внимание на выделенное слово. А я видел очень много не верных реализаций паттерна GetLastError.
absolut 04.01.2011 00:08 # −5
guest 04.01.2011 00:17 # +1
guest 04.01.2011 00:19 # +2
Lure Of Chaos 03.01.2011 17:12 # +7
теперь мы исключение создаем, но не бросаем,а вовзращаем в качестве флага!
koodeer 03.01.2011 18:51 # +6
guest 04.01.2011 17:05 # −5