如何在不期望的方法中处理nullptr?

时间:2017-03-09 14:33:19

标签: c++ exception

我的LinkedList类中有一个名为insertAtHead的方法,它接受Node*指针作为参数。

void insertAtHead(Node* newNode)
    {
        if (head == NULL) {
            head = newNode;
            tail = newNode;
        }
        else {
            newNode->next = head;
            head->prev = newNode;
            head = newNode;
        }
    };

newNode可能是nullptr,在这种情况下我如何优雅地处理这种情况?

我的想法很少:

  1. 创建一个派生自std::exception的自定义错误类(比如NullPointerParameterException,并在方法中的任何内容之前添加以下语句。

    if (newNode == nullptr) throw NullPointerParameterException("New Node to be added cannot be a null pointer."

  2. 致电assert

  3. 将消息打印到标准输出流和exit()

  4. 处理这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

将签名更改为引用:

void insertAtHead(Node& newNode);

因此调用者负责检查其指针。