gpt4 book ai didi

java - C++ 中的段错误是否可以像在 Java 中处理 NullPointerExceptions 一样处理?

转载 作者:太空宇宙 更新时间:2023-11-04 13:48:02 26 4
gpt4 key购买 nike

我意识到在段错误 (C++) 和 NullPointerExeception (Java) 之后计算的状态实际上被破坏了,但这并不意味着整个应用程序应该关闭。在设计良好的内聚系统中,其他计算应该能够成功完成并提供所需的结果。

在 Java 中,我们会简单地捕获 NullPointerException 并尽可能跳过计算。在C++中能否实现同样的效果。即对于计算,我们是否可以定义在由特定计算导致的段错误之后执行的特定代码,就像在 Java 中使用 try catch block 一样?

一个简单的例子是在事件循环中,如果其中一个事件导致段错误,则跳到处理下一个事件。

另一个例子是在算法交易中,您可以暂停订单的执行并允许交易员手动接管,而不会导致整个系统崩溃并破坏所有其他订单。

所以我正在寻找 C++ 代码,它以与下面的 NullPointerException 相同的方式实现处理段错误。

try {
computation();
} catch (NullPointerException e){
// specific code for handling the problem in the above execution of computation();
}

最佳答案

TL;DR:通常答案是否定的。但是有一些特定于系统的方法可以处理这种异常情况。

让我先解释一下“不”的部分。在取消引用空指针或其他段错误的情况下,C++ 不会抛出异常。这些错误的处理方式与例如越界数组访问 - 没有检查任何内容,只是执行代码。程序员有责任确保不会遇到此类错误 - 例如可以在使用前显式检查指针是否为空。

在大多数系统中,底层硬件和操作系统机制不允许访问,例如当空指针被解除引用时,程序会因段错误而停止。但是有些系统取消引用空指针不会导致段错误。无论如何处理此类情况,C++ 都不(很可能永远不会)包含检查它们并抛出异常的机制。

仍然有一些系统相关的方法来处理这种情况,例如 *nix 系统中的信号,Windows 中的 SEH。

关于java - C++ 中的段错误是否可以像在 Java 中处理 NullPointerExceptions 一样处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24890963/

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