Ho la seguente situazione.
Sto scrivendo un programma c ++ in cui ho una funzione che controlla un'equivalenza personalizzata di due oggetti json. Se il controllo fallisce, non voglio che l'intero programma si fermi (è un programma Qi) e ho un ramo che si esegue dopo aver ricevuto un'eccezione. Questa eccezione viene quindi passata a QT dove un qt gui visualizza un messaggio di errore da e.what()
.
Per fare ciò, ho creato una funzione che si è occupata della mia eccezione durante il lancio dei confronti di equivalenza. sembra qualcosa del genere:
void makeComparison(const json& a, const json& b){
if(condition fails)
throw (error)
if(other condition fails)
throw (error)
...
}
Ho discusso solo di rendere questa una funzione booleana, tuttavia volevo dei messaggi di errore dettagliati per dire esattamente cosa è andato storto nel programma all'utente. Sembra strano avere una funzione che non faccia altro che generare errori nei confronti dei guasti, e quindi doverli intercettare e continuare a lanciarli verso l'alto. Mi sento come se ci fosse un modo migliore per gestire questo. Ecco ME su come si presenta il resto del programma.
// some member function
try{
makeComparison(a, m_b);
// do something
}catch (exception e){
// do soemthing else
throw(e);
}
// in gui
try{
object.exceptionThrowingCode(a);
}catch (exception e){
QMessageBox::critical(this, tr("Error"), tr(e.what());
}