return false if path doesn't exist in isDirectory

just throw errors instead of catch and re-throw to make stacktrace nice