c++ - 得到空指针怎么办?

标签 c++ pointers exception-handling

主要是我不知道处理空指针的最佳实践。

代码如下:

int GetSomeVal()
{
    if(ptr)
    {
        return *ptr
    }
    else
    {
        // What here?
        // Should I return 0? or -1 or throw an exception?
    }
}

我得到这个问题是因为在 google 的 c++ style-guide 中,它没有建议我们使用异常,这可能是另一个话题。

如果我应该使用异常,是否意味着我必须设计一个异常类并抛出它? 如果我不应该使用异常,最佳做法是什么?

最佳答案

如果 ptrNULL 有意义,则不应抛出异常。异常用于指示出现问题。

如果 ptrNULL 因为出了点问题,一定要抛出异常。

Google 的代码风格是 Google 使用的。它们禁止许多通常在任何高级 OO 语言中使用的东西(如引用参数、异常等)。除非您为 Google 工作,否则不应遵守它。

您可以设计自己的异常类,从 std::exception 派生它,然后从代码中抛出它。

此外,从您的代码来看,ptr 是成员。如果它应该在构造函数中初始化但没有,也许你应该从构造函数中抛出异常。拥有无法使用的对象是没有用的。

关于c++ - 得到空指针怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12137553/

相关文章:

c++ - 如何锁定需要只写的缓冲区?

c++ - 如何在 C++ 中调用 package.preload 中的函数

pointers - 在golang中将一个指针转换为另一种类型

linux 内核模块中的 C++ 异常支持

c++ - 重新创建(重新分配)一个 std::shared_ptr 或 std::unique_ptr

c++ - typedef shared_ptr<T> 转换为 bool

objective-c - 带有 NULL 指针的 CGRectDivide

在 C 中连接字符串 - `strcpy(s1 += strlen(s1), s2)`

c# - 使用 Windows 8 Metro 的 WebView 中的 JavaScript 错误

java - 未调用 Cxf 异常映射器