如果弹出空队列,C ++抛出异常

时间:2012-10-07 23:02:41

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

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

我是该语言的新手,如果有人可以帮我弄清楚如何在空队列上调用pop()函数时弄清楚异常,我会非常感激。

我尝试过使用try和catch异常处理但是我的代码不断出现“segmenation fault error”

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

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

2 个答案:

答案 0 :(得分:1)

将整数作为异常抛出真的不是c ++中的完成。你真的应该为这个工作创建一个新的例外,或者选择一个可能符合情况的现有例外std库。

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

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

答案 1 :(得分:1)

使用throw语句抛出异常。没有涉及trycatch。调用者有责任捕获异常。

if (isEmpty())
    throw -1;