<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def process_views(self):
 """Processes the loaded views to generate the required output data."""

        output = {}
        logger.debug("Processing %d view(s)...", len(self.views))
        for view_name, view in iteritems(self.views):
            try:
                output = deep_merge_dict(
                    output,
                    view.process(
                        self.db,
                        safe_mode=self.safe_mode,
                        extra_context=self.project_context
                    )
                )
            except StatikError as exc:
                # just re-raise it
                raise exc

            except Exception as exc:
                # for unhandled view-related exceptions, raise our own exception
                raise ViewError(
                    message="Failed to render view \"%s\"." % view_name,
                    orig_exc=exc
                )

        return output