【问题标题】:C++ Throwing Exception If Popping Empty Queue如果弹出空队列,C++ 抛出异常
【发布时间】:2012-10-07 23:02:40
【问题描述】:

我正在使用 C++ 中的链表节点编写优先级队列的实现。

我是该语言的新手,如果有人能帮助我弄清楚在空队列上调用 pop() 函数时如何抛出异常,我将不胜感激。

我尝试使用 try and catch 异常处理,但我的代码不断收到“分段错误错误”

我的优先级队列实现正确.. push(), isEmpty(), size(), clear() 工作。 pop() 也起作用,但如果用户进行非法调用,我想抛出异常。

try {
    if(isEmpty()) {
        throw -1;
    }
}
catch(int n) {
    cout << "ERROR" << n << ": LIST IS EMPTY" << endl;
}

【问题讨论】:

  • 这段代码是sn-p在pop函数里面吗?

标签: c++ exception exception-handling queue try-catch


【解决方案1】:

您使用 throw 语句抛出异常。不涉及trycatch。捕获异常是调用者的责任。

if (isEmpty())
    throw -1;

【讨论】:

    【解决方案2】:

    将整数作为异常抛出在 C++ 中确实不是完成的事情。您确实应该为作业创建一个新异常,或者选择一个可能适合情况的现有异常 std 库。

    http://www.java2s.com/Tutorial/Cpp/0120__Exceptions/Throwyourownexceptionclassbasedonruntimeerror.htm

    是的,域名是 java,但它是一个 c++ 教程,并且有一个如何创建从 std::runtime_error 派生的自定义异常的示例。

    【讨论】:

    • 嗯,没错,但对于演示和快速而简单的模型,它很方便。
    猜你喜欢
    • 1970-01-01
    • 2019-12-09
    • 2013-08-17
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多