Java valeur de retour (dans le try/catch clause)

tout le monde. J'ai une recrue question sur le retour de la valeur en java. Voici mon code.

@Override
public long addDrugTreatment(long id, String diagnosis, String drug,
        float dosage) throws PatientNotFoundExn {
    try {
        Patient patient = patientDAO.getPatientByDbId(id);
        long tid = patient.addDrugTreatment(diagnosis, drug, dosage);

        Connection treatmentConn = treatmentConnFactory.createConnection();
        Session session = treatmentConn.createSession(true, Session.AUTO_ACKNOWLEDGE);
        MessageProducer producer = session.createProducer(treatmentTopic);

        TreatmentDto treatment = null;
        ObjectMessage message = session.createObjectMessage();
        message.setObject(treatment);
        producer.send(message);

        return tid;
    } catch (PatientExn e) {
        throw new PatientNotFoundExn(e.toString());
    } catch (JMSException e) {
        logger.severe("JMS Error: " + e);
    }
}

Eclipse signale un "Cette méthode doit retourner un résultat de type long" erreur. Pourtant, je n'ai retourner le tid dans le bloc try; eclipse suggère d'ajouter une valeur de retour après le bloc try/catch, qui permettrait de sortir de la logique. Pourriez-vous s'il vous plaît dites-moi ce qui va pas ici? Merci.

  • il n'y a aucune garantie que votre code à atteindre le point où vous revenez d'un long valide de valeur. Vous devez avoir une valeur de retour par défaut dans le cas où une exception se produit
  • catch (JMSException e) { logger.grave("JMS message d'Erreur:" + e); } ici, vous doens pas de garantie d'une valeur de retour, il suffit d'ajouter un retour ou d'un jet et de travail
InformationsquelleAutor magicbacon | 2012-04-12