Dopo aver attraversato alcuni link su gestione delle eccezioni (1, 2, e 3), so che i programmi C++ possono gettare praticamente nulla come eccezioni (int
, char*
, string
, exception
classe). So che std::exception
è la classe base per le eccezioni standard lanciate dal programma. Comunque, sto cercando di progettare un try
... catch
blocco come tale:Che tipo di eccezione dovrei lanciare?
try
{
MyFunc();
}
catch (certain exceptions)
{
// deal with the exception accordingly
}
catch (the rest of the exceptions)
{
// deal with these accordingly
}
mentre MyFunc()
contiene i seguenti:
void MyFunc()
{
...
if (certain condition is true) throw exception;
...
}
Il guaio è che in quella parte del MyFunc
funzione, mi Non sono sicuro di quale tipo di eccezione dovrei lanciare. Per mantenere il codice pulito implementando la mia classe di eccezioni, non ho idea di quale sarebbe un buon modo per implementare tale classe di eccezioni.
Sarebbe usare il boost essere una buona idea, anche se tutta la mia isn progetto state usando le librerie di boost ancora? – stanigator
Probabilmente no. La gerarchia di cui sopra può essere invece utilizzata e modificata in base alle proprie esigenze. Ho avuto un successo moderato usando livelli di eexception di questo tipo in progetti di grandi dimensioni. Inoltre, potrebbero verificarsi problemi di portabilità minori se si utilizza la compilazione incrociata utilizzando boost in quanto fortemente templato. Alcuni compilatori potrebbero non essere conformi allo standard C++. – Abhay