gpt4 book ai didi

空指针的 C++ 异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:43 28 4
gpt4 key购买 nike

我有一个小函数(在 DLL 中),看起来像这样:

int my_function(const char* const s)
{
try {
return my_object->do_something_with(s);
} catch (exception& e) {
return ERROR_CODE;
}
}

我认为 try-catch block 可以防止 my_object 内部发生的任何事情传播到外部。不幸的是,我错了,我调用此函数(从 VB)的程序刚刚停止工作,因为我传递了一个空指针参数。

那么,为什么我的 try-catch block 没有像(我)预期的那样工作?有解决方法吗?我曾经用 Java 编程很多,我认为它在那里可以工作......

最佳答案

在 Java 中工作,因为在 Java 中会抛出一个 NullPointerException。在 C++ 中,没有这种普遍存在的异常,取消引用空指针只会产生段错误。

此外,在 C++ 中没有强制的异常类型层次结构。任何类型的异常都可能被抛出;异常不必派生自 std::exception。 (因此,即使有人定义了一个 class NullPointerException {};,但没有指定它派生自 std::exception,您仍然无法捕获它。 )

关于空指针的 C++ 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5271969/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com