Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.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++ Winsock2+;C+中的OpenSSL+;:我怎样才能捕捉到他们的异常?_C++_Windows_Sockets_Exception_Openssl - Fatal编程技术网

C++ Winsock2+;C+中的OpenSSL+;:我怎样才能捕捉到他们的异常?

C++ Winsock2+;C+中的OpenSSL+;:我怎样才能捕捉到他们的异常?,c++,windows,sockets,exception,openssl,C++,Windows,Sockets,Exception,Openssl,我想捕获在使用Winsock2和OpenSSL加密的套接字时引发的异常,但我不知道如何做到这一点。在C++中,我只能捕捉基类异常,但是在C++中,用“catch(STD::Exchange E)”捕获它们是行不通的。它只适用于“catch(…)”,但我需要一些对象来获取详细信息 < C++ >不可能通过为基类STD创建一个catch块来捕获每种异常,或者异常是从其他基类派生的异常吗?< /P> 干杯 Alex在OpenSSL中,当发生错误时,更详细的信息存储在“错误队列”中。使用错误队列可以做的

我想捕获在使用Winsock2和OpenSSL加密的套接字时引发的异常,但我不知道如何做到这一点。在C++中,我只能捕捉基类异常,但是在C++中,用“catch(STD::Exchange E)”捕获它们是行不通的。它只适用于“catch(…)”,但我需要一些对象来获取详细信息

< C++ >不可能通过为基类STD创建一个catch块来捕获每种异常,或者异常是从其他基类派生的异常吗?< /P> 干杯
Alex

在OpenSSL中,当发生错误时,更详细的信息存储在“错误队列”中。使用错误队列可以做的最简单的事情是打印整个队列。可以使用
ERR\u print\u errors\u fp()
打印错误队列。你使用C++包装器吗?请注意,C++异常在大多数情况下是框架特定的。有许多例子表明,框架异常不是从
std::exception
派生的。例如,在MFC中,所有异常都源自
CException
,它与OpenSSL中的
std::exception

无关。当发生错误时,更详细的信息存储在“错误队列”中。使用错误队列可以做的最简单的事情是打印整个队列。可以使用
ERR\u print\u errors\u fp()
打印错误队列。你使用C++包装器吗?请注意,C++异常在大多数情况下是框架特定的。有许多例子表明,框架异常不是从
std::exception
派生的。例如在MFC中,所有异常都是从<代码> cExabor <代码>导出的,这与<代码> STD::异常< /C> > < < /P> > P>您甚至可以在C++中将一个整数作为“异常对象”抛出。所以没有用于异常的公共基类。 您必须查看正在使用的库文档,并搜索可能的异常。
如果使用VisualStudio,则可以告诉调试器停止,当异常抛出(主菜单>调试->异常……或只查看您的“输出窗口”并搜索抛出的异常类型)。C++中,您甚至可以在C++中将整数作为“异常对象”抛出。所以没有用于异常的公共基类。 您必须查看正在使用的库文档,并搜索可能的异常。
如果使用VisualStudio,则可以告诉调试器停止,当异常抛出(主菜单>调试->异常…或查看您的“输出窗口”并搜索抛出的异常类型)。据我所知,Winsock和OpenSSL是基于C的项目,因此不要抛出C++异常。 也就是说,这些项目有可能引发结构化异常。例如,如果将坏缓冲区传递给这些项目之一导出的函数,操作系统可能会引发访问冲突异常


虽然可能,但您可能不想——引发异常的应用程序的状态可能不一致。

< P>据我所知,Winsock和OpenSSL是基于C的项目,因此不抛出C++异常。 也就是说,这些项目有可能引发结构化异常。例如,如果将坏缓冲区传递给这些项目之一导出的函数,操作系统可能会引发访问冲突异常


虽然可能,但您可能不希望-引发异常的应用程序的状态可能不一致。

谢谢,当未知错误再次发生时,我会记住这一点。谢谢,当未知错误再次发生时,我会记住这一点。谢谢,当未知错误再次发生时,我会记住这一点。关于包装:我从类对象的方法中调用这些函数,并将各种连接相关参数保留为成员变量,但我不确定这是否完全符合包装的定义。谢谢,当未知错误再次发生时,我会记住这一点。关于包装:我从类对象的方法中调用这些函数,并将各种与连接相关的参数保留为成员变量,但我不确定这是否完全符合包装的定义。