我有一些代码来对对象的矢量进行排序.如果任何对象无效,我想立即停止排序并报告错误.在错误中,我想要包含无效对象的描述(无论哪一个有多少).
这是我的代码(不完整,但我希望你能跟着我):
int sortProc(const Bulk & b1, const Bulk & b2) { if (!b1.isValid()) throw b1; if (!b2.isValid()) throw b2; return b1.compareTo(b2); } vector* items = getItems(); try { sort(items->begin(), items->end(), sortProc); } catch (const Bulk & item) { cout << "Cannot sort item: " << item.description(); }
现在,我对我的代码有点不确定,因为我听说所有异常都应该是异类的子类,并且抛出不是异常实例的对象被认为是不好的做法,但我真的不明白为什么.我上面的代码有效,它有什么问题吗?这是一个严肃的问题,所以如果你看到任何问题,我会很高兴知道.我不是在寻找道德问题.