Commit d9586f64 authored by Pavel Vainerman's avatar Pavel Vainerman

(ModbusTCP): подправил обработку исключений

parent a6d93c52
...@@ -217,7 +217,7 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg, ...@@ -217,7 +217,7 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
} }
catch( ModbusRTU::mbException& ex ) catch( ModbusRTU::mbException& ex )
{ {
dlog[Debug::WARN] << "(query): " << ex << endl; dlog[Debug::WARN] << "(query): " << ex << endl;
} }
catch( SystemError& err ) catch( SystemError& err )
{ {
...@@ -232,6 +232,10 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg, ...@@ -232,6 +232,10 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
dlog[Debug::WARN] << "(query): tcp error: " << e.getString() << endl; dlog[Debug::WARN] << "(query): tcp error: " << e.getString() << endl;
return erTimeOut; return erTimeOut;
} }
catch( std::exception& e )
{
dlog[Debug::CRIT] << "(query): " << e.what() << std::endl;
}
catch(...) catch(...)
{ {
dlog[Debug::WARN] << "(query): cath..." << endl; dlog[Debug::WARN] << "(query): cath..." << endl;
...@@ -272,20 +276,17 @@ void ModbusTCPMaster::reconnect() ...@@ -272,20 +276,17 @@ void ModbusTCPMaster::reconnect()
tcp = new ost::TCPStream(iaddr.c_str(),ost::Socket::IPV4,536,true,500); tcp = new ost::TCPStream(iaddr.c_str(),ost::Socket::IPV4,536,true,500);
tcp->setTimeout(replyTimeOut_ms); tcp->setTimeout(replyTimeOut_ms);
} }
catch(ost::Socket *socket) catch( std::exception& e )
{ {
ost::tpport_t port; ostringstream s;
int err = socket->getErrorNumber(); s << "(ModbusTCPMaster): connection " << s.str() << " error: " << e.what();
ost::InetAddress saddr = (ost::InetAddress)socket->getPeer(&port); dlog[Debug::CRIT] << s.str() << std::endl;
dlog[Debug::CRIT] << "tcp error " << saddr.getHostname() << ":" << port << " = " << err << endl;
}
catch( ost::SockException& e)
{
dlog[Debug::CRIT] << "tcp error: " << e.getString() << endl;
} }
catch(...) catch( ... )
{ {
dlog[Debug::CRIT] << "create TCPStream[" << iaddr << "] error..." << endl; ostringstream s;
s << "(ModbusTCPMaster): connection " << s.str() << " error: catch ...";
dlog[Debug::CRIT] << s.str() << std::endl;
} }
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -305,27 +306,26 @@ void ModbusTCPMaster::connect( ost::InetAddress addr, int port ) ...@@ -305,27 +306,26 @@ void ModbusTCPMaster::connect( ost::InetAddress addr, int port )
if( dlog.debugging(Debug::INFO) ) if( dlog.debugging(Debug::INFO) )
dlog[Debug::INFO] << "(ModbusTCPMaster): connect to " << s.str() << endl; dlog[Debug::INFO] << "(ModbusTCPMaster): connect to " << s.str() << endl;
iaddr = s.str(); iaddr = s.str();
ost::Thread::setException(ost::Thread::throwException);
try try
{ {
tcp = new ost::TCPStream(iaddr.c_str()); tcp = new ost::TCPStream(iaddr.c_str());
tcp->setTimeout(replyTimeOut_ms); tcp->setTimeout(replyTimeOut_ms);
} }
catch(ost::Socket *socket) catch( std::exception& e )
{
ost::tpport_t port;
int err = socket->getErrorNumber();
ost::InetAddress saddr = (ost::InetAddress)socket->getPeer(&port);
dlog[Debug::CRIT] << ": tcp error " << saddr.getHostname() << ":" << port << " = " << err << endl;
}
catch( ost::SockException& e)
{ {
dlog[Debug::CRIT] << "tcp error: " << e.getString() << endl; ostringstream s;
s << "(ModbusTCPMaster): connection " << s.str() << " error: " << e.what();
dlog[Debug::CRIT] << s.str() << std::endl;
} }
catch(...) catch( ... )
{ {
dlog[Debug::CRIT] << "create TCPStream[" << iaddr << "] error..." << endl; ostringstream s;
s << "(ModbusTCPMaster): connection " << s.str() << " error: catch ...";
dlog[Debug::CRIT] << s.str() << std::endl;
} }
// } // }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment