为什么抛出一个非例外被认为是糟糕的设计?

 郭城镣 发布于 2023-02-11 20:20

我有一些代码来对对象的矢量进行排序.如果任何对象无效,我想立即停止排序并报告错误.在错误中,我想要包含无效对象的描述(无论哪一个有多少).

这是我的代码(不完整,但我希望你能跟着我):

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();
}

现在,我对我的代码有点不确定,因为我听说所有异常都应该是异类的子类,并且抛出不是异常实例的对象被认为是不好的做法,但我真的不明白为什么.我上面的代码有效,它有什么问题吗?这是一个严肃的问题,所以如果你看到任何问题,我会很高兴知道.我不是在寻找道德问题.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有