- 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
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
//Вколите мне каплю никотина, а когда меня разорвет - сожгите ошметки напалмом.
//Только это смоет мой позор.
//Примерно так у меня выглядит вся обработка исключений:
int main(int, char**) //или wWinMain, не важно
{
try
{
//all stuff here
}
catch(std::exception e)
{
MessageBoxA(NULL, e.what(), "oops", MB_OK | MB_ICONERROR);
}
catch(...)
{
MessageBoxA(NULL, "Unknown error", "oops", MB_OK | MB_ICONERROR);
}
return 0;
}
//А еще у меня есть свой класс строки:
class MyString
{
wchar_t * data;
size_t length;
MyString(wchar_t * _data, size_t _length) : data(_data), length(_length) { }
public:
//...
static MyString MyString::fromNumber(int num)
{ //Грешен, определяю функции в заголовочном, хотя это и не тот случай.
wchar_t * data = new wchar_t[16];
HRESULT hr = StringCchPrintfW(data, 16, L"%d", num);
if(FAILED(hr))
{
throw std::exception("shit happend inside MyString::fromNumber(int)");
}
size_t len = 0;
hr = StringCchLengthW(data, 16, &len);
if(FAILED(hr))
{
throw std::exception("shit happend inside MyString::fromNumber(int)");
}
return MyString(data, len);
}
};
//А вкупе с обработкой исключений чуть выше...
//Чуть не забыл про auto_ptr. Укорочено до сути.
class Base
{
protected:
std::auto_ptr<SomeType> data; //А где он инициализируется?...
public:
virtual ~Base() { }
};
class Deriv : public Base
{
public:
Deriv() : Base()
{
data = std::auto_ptr<SomeType>(new SomeType(args)); //...а вот тут он инициализируется!
}
virtual ~Deriv() { }
};
//Паттерны!
class Single
{
Single(); //Без реализации.
template<typename T> Single(T); //Без реализации.
template<typename T1, typename T2> T1 operator = (T2); //Без реализации.
class Ton
{
//...
};
static Ton object;
static Ton initObject();
public:
Ton & instance() { return object; }
};
//Мне стыдно.