3

我正在使用 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;
}
4

2 回答 2

1

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

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

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

于 2012-10-07T23:39:31.980 回答
1

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

if (isEmpty())
    throw -1;
于 2012-10-08T01:52:48.773 回答