The API documentation should specify which runtime exceptions are thrown when and why. For instance, DefaultArtifact's constructors seem to throw IllegalArgumentExceptions if given bad coordinates:
Exception in thread "main" java.lang.IllegalArgumentException: Bad artifact coordinates blah blah, expected format is <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>
That's reasonable. However it's not mentioned in the Javadoc, and I'm about to commit code to my project that depends on this behavior. We should document and commit to these.