Ich möchte in meiner wxWidgets Applikation Exceptions benutzen, wenn etwas schief gelaufen ist. Da ein Vorteil von Exceptions ist, dass man alles relativ zentral behandeln kann, würde ich das gerne für alle Events an einer Stelle erledigen.
Also hab ich mich mal schlau gemacht:
http://docs.wxwidgets.org/trunk/overview_exceptions.html
http://docs.wxwidgets.org/trunk/classwx_app_console.html#78a6f9e56b77addf8251f0f5c10004fb
Und daraufhin folgenden Code zusammengebastelt:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class MrlViewer : public wxApp
...
virtual void HandleEvent(wxEvtHandler *handler, wxEventFunction func, wxEvent &event);
void MrlViewer::HandleEvent(wxEvtHandler *handler, wxEventFunction func, wxEvent &event)
{
try
{
wxAppConsole::HandleEvent(handler, func, event);
}
catch(std::exception &ex)
{
wxMessageBox(boost::diagnostic_information(ex), "An exception occured");
}
catch(...)
{
wxMessageBox("unbekannte ausnahme!", "just a test");
}
}
|
Leider wird das aber irgendwie niemals aufgerufen. Die einzige mögliche Ursache, die ich finden konnte war, dass wxUSE_EXCEPTIONS nicht definiert ist, das ist aber alles korrekt eingestellt.
Außerdem finde ich es ziemlich albern, dass, wenn VC Express im Debugger eine ungefangene Exception findet, er mir eine ziemlich wirre Codestelle zeigt und nicht die, wo die Exception per throw geworfen wurde. Kann man das ändern, oder macht das Sinn so?