C'è qualcosa di speciale da considerare quando si scrive la mia propria classe di eccezioni in C ++? [chiuso]

0

Se volessi implementare la mia versione di std :: exception senza una buona ragione, ci sono delle cose particolari sull'implementazione di questo tipo di oggetto di cui dovrei essere a conoscenza? Sembra una cosa abbastanza semplice che è principalmente un wrapper di stringhe ...

Ecco la mia implementazione fino ad ora:

#pragma once;

#include <string>

class MyException
{
public:
    MyException(const std::wstring&);
    virtual ~MyException(){}

    virtual MyException& operator=(const MyException& rhs);
    virtual const std::wstring& what(){return msg;};

private:
    std::wstring msg;
};

MyException::MyException(const std::wstring& message)
:msg(message)
{
}

MyException& MyException::operator=(const MyException& rhs)
{
    if(this == &rhs)
    {
        return *this;
    }
    msg = rhs.msg;
    return *this;
}
    
posta c.hughes 15.02.2013 - 23:21
fonte

2 risposte

4

Il miglior consiglio che potrei darti è di basare il codice sulle classi di eccezioni standard . Renderà il tuo codice più semplice e consentirà a te e ai tuoi utenti di interagire con il codice esistente, la libreria standard o le librerie di terze parti.

    
risposta data 15.02.2013 - 23:59
fonte
1

Non particolarmente. La gestione delle eccezioni è già una routine costosa, quindi è difficile attirare le cose da quella prospettiva e la lingua non tratta gli oggetti lanciati notevolmente diversi dagli altri. In effetti, potresti semplicemente lanciare una stringa se lo volessi. Ma dovresti progettare più classi derivate per contenere più informazioni, IMO.

    
risposta data 16.02.2013 - 01:48
fonte

Leggi altre domande sui tag