Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Wo bekommt CException::ReportError() den Fehlertext her

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.01.2006, 13:48 Uhr
~rumpeldipumpel
Gast


Hallo,

ich habe eine Frage...ich habe soeben eine eigene Exceptionklasse von CException abgeleitet....Die (spärliche) DOKU sagt mir, dass man von einer CException die Methoden ReportError() und GetErrorMessage() eine Fehlermeldung ausgeben bzw. den Fehlerstring besorgen....

Nun stellt sich doch aber die Frage, wie man den auszugebenden Fehlerstring in die Exception hineinbekommt. Ich vermisse irgendwie eine Methode z.b. SetErrorMessage()...

...naja, ich hab dann meine eigene Exceptionklasse mit einem CStringmember aufgerufen und das Member m_strMessage von CException initialisiert, in der Hoffnung, dass die obengenannten Methoden dieses Member ausgeben......aber ich bekomme immer einen leeren String....


Also, weiß jemand, wie man ReportError() dazu bringt, eine selbstdefinierte Message auszugeben??? Ich meine, ich könnte ReortError() natürlich in meiner Klasse überschreiben, aber ich kann mir nicht vorstellen, dass CException das nicht schon von selber kann.....


BESTEN DANK!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.01.2006, 13:56 Uhr
Tommix



Hallo,

Zitat von ~rumpeldipumpel:
... aber ich kann mir nicht vorstellen, dass CException das nicht schon von selber kann.....

Im Grunde ist es aber so. ReportError ruft GetErrorMessage auf und diese wiederum muß Du überladen, da die Implementierung in CException nicht viel macht:

Zitat von Mfc\Src\Except.cpp:

C++:
BOOL CException::GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
    PUINT pnHelpContext /* = NULL */ )
{
    if (pnHelpContext != NULL)
        *pnHelpContext = 0;

    if (nMaxError != 0 && lpszError != NULL)
        *lpszError = '\0';

    return FALSE;
}

int CException::ReportError(UINT nType /* = MB_OK */,
    UINT nError /* = 0 */)
{
    TCHAR   szErrorMessage[512];
    int     nDisposition;
    UINT    nHelpContext;

    if (GetErrorMessage(szErrorMessage, _countof(szErrorMessage), &nHelpContext))
        nDisposition = AfxMessageBox(szErrorMessage, nType, nHelpContext);
    else
    {
        if (nError == 0)
            nError = AFX_IDP_NO_ERROR_AVAILABLE;
        nDisposition = AfxMessageBox(nError, nType, nHelpContext);
    }
    return nDisposition;
}




Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: