如果我得到一个空指针该怎么办?

she*_*ngy 3 c++ pointers exception-handling

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

这是代码:

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

我有这个问题,因为在google的c ++样式指南中,它并不建议我们使用异常,这可能是另一个主题.

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

Luc*_*ore 7

如果是有意义的ptrNULL,你不应该抛出异常.例外用于表示出现问题.

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

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

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

此外,从您的代码,ptr是一个成员.如果它应该在构造函数中初始化而它没有,那么也许你应该从构造函数中抛出异常.拥有一个不可用的对象是没有用的.