服务追踪器 |如果出现异常,是否应该在 addingService 方法中释放服务?

ServiceTracker | Should we release service in addingService method in case of exception?

我创建了一个 ServiceTracker,其中 ServiceTrackerCustomizer 为空,并覆盖了 addingService 和 removedService 方法。

考虑使用此代码片段添加服务方法。

public T addingService(ServiceReference<T> reference) {
    T service = super.addingService(reference);
    try {
        // some code which may throw exception. 
    } catch (Exception ex) {
        // Let's not track if exception occurred.
        service = null;
        this.context.ungetService(reference);
    }
    return service;
}

那么,是否可以在异常情况下急于释放服务?或者我们可以省略它,OSGi 框架将负责稍后发布服务?

请指教

您应该取消问题中显示的服务。