Någon som är bra på undantag i VS2005? Har tyvärr inte arbetat med VS2005 mer än ytterst sporadiskt, och i synnerhet aldrig behövt hantera problemet. Har dock hittat följande, som verkar beskriva problemet och lösningen ganska precist. http://www.thunderguy.com/semicolon/2002/08/15/visual-c-exception-handling/Exceptions & VS2005
Jag har läst hjälpen och har inte lyckats reda ut hur jag skall göra med asynkrona undantag.
Det jag vill göra är:
<code=c++>
try {
// mitt program
}
catch (std::exception& err) {
// hantera standard exception
}
catch (...) {
// hantera alla övriga c++ undantag (dvs throw) där stacken är korrekt
}
catch (?) {
// hantera asynkrona undantag (division med 0, page fault mm)
}
</code>
I hjälpen finns följande exempel
<code=c++>
void fail() { // generates SE and attempts to catch it using catch(...)
try {
int i = 0, j = 1;
j /= i; // This will throw a SE (divide by zero).
}
catch(...) { // catch block will only be executed under /EHa
cout<<"Caught an exception in catch(...)."<<endl;
}
}
int main() {
__try {
fail();
}
// __except will only catch an exception here
__except(EXCEPTION_EXECUTE_HANDLER) {
// if the exception was not caught by the catch(...) inside fail()
cout << "An exception was caught in __except." << endl;
}
}
</code>
Vilket verkar vara det jag vill göra men samtidigt står det:
"Structured exception handling works with Win32 for both C and C++ source files. However, it is not specifically designed for C++. You can ensure that your code is more portable by using C++ exception handling. Also, C++ exception handling is more flexible, in that it can handle exceptions of any type. For C++ programs, it is recommended that you use the C++ exception-handling mechanism (try, catch, and throw statements"Sv: Exceptions & VS2005
Den är ett par år gammal, men min gissning är att den ändå är korrekt.
Tyvärr verkar det vara en tämligen otrevlig metod.