есть код с ворнингом от компилятора VS2008
void AppendContext(const char* Context)
{
MyException e(GetException());
e.AppendContext(Context);
throw e;
}
bool MyMain()
{
try {
SomethingFunction();
return true; // в данном примере возвращаемое значение пустышка. Но в реальных приложениях такое возможно
}
catch(...) {
AppendContext("MyMain context."); // компилятор выдает ворнинг throwalwaystest.cpp(63) : warning C4715: 'MyMain' : not all control paths return a value
}
}
компилятор ведь неправ, правда ?
полный пример
http://files.rsdn.ru/46977/ThrowAlwaysTest.7z
Поэтому я вижу несколько путей решения:
1. самый лучший — компилятор должен исправиться
2. похуже т.к. в п.1 наверно трудно сделать такой компилятор то нужно ввести в язык спецификатор throwalways: "void AppendContext() throwalways". На базе этого спецификатора компилятор не будет выдавать ворнингов
3. еще хуже: pragma warning(disable:4715)
Что скажете ?