1. enums are hard to extend for std lib, and absolutely impossible by 3rd party libraries.
What's the problem? When you add new functionality to std lib, you add an enum entry in the same pull request. 3rd party libraries define their specific exceptions and enums.