- 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
std::string sError = "";
try
{
fIn = fopen(cszFileName, "rb");
if (fIn == 0)
{
sError = "Can not open file: ";
sError += cszFileName;
throw std::string("");
}
if (!ParseFile(fIn, pLookup))
{
sError = "Bad file format. File: ";
sError += cszFileName;
throw std::string("");
}
sError = "";
throw std::string("");
}
catch (std::string& e)
{
if (fIn != 0)
{
fclose(fIn);
fIn = NULL;
}
if (sError.length() != 0)
{
throw std::exception(sError.c_str());
}
}
Там же нашел еще более шикарное продолжение гавнокода http://govnokod.ru/1459
guest 12.08.2009 12:49 # +1
guest 12.08.2009 14:40 # 0
lugal 12.08.2009 14:55 # 0
1 - текст сообщения о ошибке передавался строковой переменной.
2 - Исключенпие бросалось совершенно левого формата.
3 - даже при нармальном завершении участка кода бросалось исключение, видимо, для "рационализации" закрытия файла.
4 - И наконец таки если ошибка все же происходила, то потом таки выбрасывалось исключени с "человеческим лицом"
guest 12.08.2009 15:13 # 0
guest 12.08.2009 15:17 # 0
megaprogrammer001 12.08.2009 15:44 # −1
И скомпилировалось же...
namespace std
{
class exception
{
public:
exception() throw() { }
virtual ~exception() throw();
virtual const char* what() const throw();
};
lugal 12.08.2009 16:00 # 0