启动时,它会从文件加载数据,并在将其保存到内存之前验证它是否正确。
RepositoryInFile::RepositoryInFile(Validator *validator){
this->validator = validator;
this->read();
}
read()是一种尝试打开和读取文件数据的私有方法。它也抛出异常。当我在程序中发现错误时,我会做这样的事情:
try {
//do something
} catch (CustomException customE) {
QString message = QString::fromStdString(customE.reason());
// I'm not extending std::exception beacause... well I don't know why
QMessageBox::critical(this, "Error!", message);
}
现在,如果在RepositoryInFile的构造函数中出现问题,我可以抛出一个异常,我可以在我的main函数中捕获它,但我不能在屏幕上显示一个很好的消息框,通知用户有什么东西出错了(或者我不知道怎么做)。 现在我在qDebug()的控制台中显示一条消息,但这只是为了帮助我。
答案 0 :(得分:0)
我应该重新设计我的RepositoryInFile的工作方式,还有其他一些方法可以在GUI初始化后从文件加载数据?
不一定需要。您只需在异常处理程序中显示消息框即可。您需要做的唯一改变是:
QMessageBox::critical(0, "Error!", message);
// ^
所以,基本上如果用“零”替换它,那么它将成为你UI的“根”。