我已经在服务器应用程序中使用纯Java(无框架,只是套接字通信)构建了一个客户端库,并且此客户端库在Spring应用程序中使用。
我正在调试一个问题,我的客户端库会捕获一个似乎被抛入不相关服务的Exception
。
例如,假设ServiceClient
是我的客户端库的包装器,ServiceDB
是数据库服务。然后可能发生以下情况:
ServiceDB
获得SQL error
并且没有抓住它ServiceClient
内的库在读取或从套接字发送时捕获Exception
,但此异常的消息是SQL error
但ServiceClient
根本不依赖或使用SQL。此外,ServiceClient
和ServiceDB
之间没有依赖关系。如果用网络套接字服务或类似服务替换ServiceDB
,也会发生同样的事情。
有时,我确实看到DestroyJavaVM
线程正在运行,我认为这表明Spring正在尝试关闭。但是,每次发生此问题时,我都不肯定此线程会运行,因此可能不相关。
我怀疑这可能是由一些潜在的Spring行为引起的,但我不知道会导致这种情况的原因。
我的问题是:是什么导致我的服务能够捕获看似在完全不相关的模块中引起的异常?