是否在C ++库中使用Socket库中的异常?

时间:2015-06-01 09:22:23

标签: c++ sockets exception

我打算用C ++编程语言构建一个可移植的Socket库。众所周知,网络编程中经常出现错误。其中一些是可以恢复的,而另一些则不是。我计划在C ++中使用异常来跟踪异常,执行一些日志记录操作并通知最终用户。但是,使用异常非常困难,并且使用错误代码等经典技术会导致代码难以阅读(许多if语句)。那么你的偏好是什么?

顺便问一下,有没有轻量级的套接字库(受欢迎的是教育用途,像Ace这样的东西真的很难理解)?

2 个答案:

答案 0 :(得分:0)

使用返回码的缺点是人们忘记了错误处理。这种情况不会发生例外情况。但是,如果您编写一个在其析构函数中断言的返回代码类,除非读取或显式忽略返回值,您可以获得返回值的可移植性和性能,而不会出现错误处理不良的缺点。如果调用者需要处理异常,您仍然需要手动转发错误代码。

答案 1 :(得分:0)

这个问题的答案都归结为你希望处理错误条件的地点和方式。

异常处理在解析器中真正发挥作用,当需要从一些深层嵌套的代码返回之后才能处理错误。检查错误代码将是一个无用的负担。

IO可能略有不同,因为至少在某种程度上接近故障点处理错误是有意义的。如果允许错误向上传播,则会丢失上下文并使错误处理无效。

无论您决定做什么,都要记录故障点,以便以后可以正确调试。例外往往会隐藏故障点并使调试变得非常困难。