ReflectionUtils.forName() should throw exceptions in case of errors during instantiation
For upstream consumers it should be easier to detect/fix issue when loading certain classes. Right now the original downstream classloading issue is only logged with level warn.
Instead there should be an exception thrown in case no classloader is finding the class where all the individual classloader exceptions should be added as suppressed exceptions (https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)). That way a downstream consumer of ReflectionUtils.forName() has all the relevant information at hand why instantiation failed.
Unfortunately with https://github.com/ronmamo/reflections/commit/f4141a062c2b32ea0fc6930c48bab84eb01c1105 the exception handling even became worse (previously an exception was thrown but didn't contain the original classloading exception but now it just returns null and logs instead).
Maybe to not introduce regression we could have two versions of the most common methods: One which just returns null if some classes cannot be loaded and the other one throwing exceptions.
I think this was fixed meanwhile in v0.10 as no exception seem to be swallowed in https://github.com/ronmamo/reflections/blob/1f05c178131b252b787e0c89f43feab3b370295b/src/main/java/org/reflections/util/NameHelper.java#L64 and https://github.com/ronmamo/reflections/blob/1f05c178131b252b787e0c89f43feab3b370295b/src/main/java/org/reflections/util/ClasspathHelper.java#L150 (except for MalformedUrlException).