Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
异常处理和从非致命错误中恢复 我正在编写一个C++应用程序,它需要处理来自C API的错误代码,特别是WiSoCK2 API。我不确定处理致命错误和非致命错误的最佳方法_C++_Exception Handling - Fatal编程技术网

异常处理和从非致命错误中恢复 我正在编写一个C++应用程序,它需要处理来自C API的错误代码,特别是WiSoCK2 API。我不确定处理致命错误和非致命错误的最佳方法

异常处理和从非致命错误中恢复 我正在编写一个C++应用程序,它需要处理来自C API的错误代码,特别是WiSoCK2 API。我不确定处理致命错误和非致命错误的最佳方法,c++,exception-handling,C++,Exception Handling,例如,如果调用send失败,错误代码为WSAECONNABORTED,我希望将错误返回给调用方,但继续执行程序。在这种情况下,调用方会将连接标记为已终止并继续。但是如果它失败了,我想考虑致命的错误,比如WSAENETDOWN,我希望应用程序终止。< /P> 我知道异常用于异常情况,所以使用异常来处理致命错误是有意义的。我想问的是如何处理非致命错误案例 在非致命案例中,是否应返回错误代码?如果我还需要返回一个值,那么我需要同时返回一个代码和一个值。或者我应该做两个异常分类,比如FatalError

例如,如果调用send失败,错误代码为WSAECONNABORTED,我希望将错误返回给调用方,但继续执行程序。在这种情况下,调用方会将连接标记为已终止并继续。但是如果它失败了,我想考虑致命的错误,比如WSAENETDOWN,我希望应用程序终止。< /P> 我知道异常用于异常情况,所以使用异常来处理致命错误是有意义的。我想问的是如何处理非致命错误案例

在非致命案例中,是否应返回错误代码?如果我还需要返回一个值,那么我需要同时返回一个代码和一个值。或者我应该做两个异常分类,比如FatalError和非CatalError类,并且只在处理非CatalError异常时尝试恢复?或者有其他/更好的方法来做到这一点

[更新]澄清 对于我对最初的问题的理解似乎有些混乱。我了解异常是如何处理的,不处理时会发生什么,重新引用异常,以及它们的性能特征

我要求提供技术/最佳实践来处理并非真正例外的情况。在这种情况下,可能发生的错误会导致连接无法使用,但不会影响服务器的其余部分


我最好避免每个错误代码都有一个异常类,因为这样会创建很多几乎无用的异常类。

如果您想将错误传播到调用堆栈中,可以使用异常。创建从std::exception继承的自定义类,如果要应用特定的处理方法,则捕获它们

try {
  my_function_which_throws();
} catch (const FatalError& e) {
  // do something, or rethrow
} catch (const NonFatalError& e) {
  // log or do nothing
}

异常只有在抛出时才需要时间处理。如果函数不抛出任何内容,则不会影响性能。

使用抛出;如果你不想处理它,在你的catch子句中。没有任何后盾,通过终止终止程序。Bam,dead,没有提示用户。异常与返回代码与它是否致命是非常正交的。