10.2. 处理连接和协议错误
您可以通过覆盖以下 messaging_handler 方法来处理协议级错误:
-
on_transport_error(proton::transport&) -
on_connection_error(proton::connection&) -
on_session_error(proton::session&) -
on_receiver_error(proton::receiver&) -
on_sender_error(proton::sender&)
每当事件发生特定对象时,这些事件处理例程都会调用。在调用错误处理程序后,也会调用相应的关闭处理程序。
如果没有覆盖多个更具体的错误处理程序,则调用默认错误处理程序:
-
on_error(proton::error_condition&)
注意
由于在出现任何错误时调用关闭处理程序,因此仅需要在错误处理程序中处理错误本身。资源清理可以通过关闭的处理程序来管理。如果没有特定于特定对象的错误处理,则通常使用常规 on_error 处理程序,且没有更具体的处理程序。
注意
当启用重新连接并且远程服务器关闭具有 amqp:connection:forced 条件的连接时,客户端不会将其视为错误,因此不会触发 on_connection_error 处理程序。相反,客户端会开始重新连接过程。