Generic exceptions are no longer being caught - Issue #2 fixed

Generic exceptions in most cases should never be caught because Exceptions which are never expected, such as RuntimeExceptions or ClassCastException, end up being caught in library-level error handling. Also, custom exceptions thrown by developers can get caught and exposed in unexpected manner to a developer.

With this commit all generic exceptions are removed and replaced with the actual exceptions being thrown.