I'm afraid this try-catch is absolutely necessary, otherwise it might leave your injectors in an inconsistent state.

For example, if the `provider.get(...)` throws, `resolving.removeLast()` will not happen, so next time `injector.get()` is called it might result in a "circular dependency" error (because `resolving` would not be correctly cleaned up).