首页 > 解决方案 > C++ 异常调用 _exit

问题描述

我有一个使用异常开发的类。但是每次我调用一个函数并产生异常时,程序似乎都会挂起。更仔细的调查显示,throw 命令有一长串最终调用的调用exit()

throw command -> __cxa_throw() -> std::terminate() -> __cxabiv1::__terminate() -> abort() -> _exit()

我之前已经多次使用过同样的方法,所以我非常有信心问题不在实施中,但我正在努力寻找根本原因。我也尝试了一个通用的捕获所有(...),我确信这只是一个位置。有什么建议么?

Source of the exception (_connectTcp())

status = nxd_tcp_client_socket_connect(
      socket_ptr,
      &server_addr,
      port,
      wait_option);
if( status != NX_SUCCESS)
{
   throw ERRORS::TCP_SOCKET_BIND_ERROR;
}

尝试/捕获块

try
{
   _connectTcp( socket_ptr, ip_addr, port, connect_wait);
}
catch( ERRORS err)
{
   error = err;
}

堆栈副本:

_exit() at _exit.c:19 0x60040b36 abort() at 0x60034da4
__cxxabiv1::__terminate() at 0x60035604 std::terminate() at 0x60035612
__cxa_throw() at 0x60035752 RtController_Ethernet::_connectTcp() at RTController_Ethernet.cpp:1,063 0x6000945c

标签: c++exceptiontry-catch

解决方案


推荐阅读