hmm actually I think I've refactored the loading code before pushing the PR (sorry my memory :/)
After reading the whole code again here are my feelings: 

As the loading happens in an initializer in that final version, if something bad happened it would raise there. 
So if loading went without error raising (the app started), ````@docs```` in ProjectServiceDoc will be at worse equal to an empty hash. So ````Gitlab::ProjectServiceDoc.get()```` could only raise like any  ```hash[]``` method call could do. And I don't think it will do anything worse than just returning nil.