<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_added_port(self, device_details):
 """Process the new ports. Wraps _process_added_port, and treats the sucessful and exception cases. """

        device = device_details['device']
        port_id = device_details['port_id']
        reprocess = True
        try:
            self._process_added_port(device_details)

            LOG.debug("Updating cached port %s status as UP.", port_id)
            self._update_port_status_cache(device, device_bound=True)
            LOG.info("Port %s processed.", port_id)
        except os_win_exc.HyperVvNicNotFound:
            LOG.debug('vNIC %s not found. This can happen if the VM was '
                      'destroyed.', port_id)
            reprocess = False
        except os_win_exc.HyperVPortNotFoundException:
            LOG.debug('vSwitch port %s not found. This can happen if the VM '
                      'was destroyed.', port_id)
            # NOTE(claudiub): just to be on the safe side, in case Hyper-V said
            # that the port was added, but it hasn't really, we're leaving
            # reprocess = True. If the VM / vNIC was removed, on the next
            # reprocess, a HyperVvNicNotFound will be raised.
        except Exception as ex:
            # NOTE(claudiub): in case of a non-transient error, the port will
            # be processed over and over again, and will not be reported as
            # bound (e.g.: InvalidParameterValue when setting QoS), until the
            # port is deleted. These issues have to be investigated and solved
            LOG.exception("Exception encountered while processing "
                          "port %(port_id)s. Exception: %(ex)s",
                          dict(port_id=port_id, ex=ex))
        else:
            # no exception encountered, no need to reprocess.
            reprocess = False

        if reprocess:
            # Readd the port as "added", so it can be reprocessed.
            self._added_ports.add(device)

            # Force cache refresh.
            self._refresh_cache = True
            return False

        return True