je la hiérarchie des exceptions suivantes définies:signature de type Scala échoue avec les sous-classes
/**
* Base class for all exceptions in this library
*/
trait MyAkkaHttpException {}
/**
* Thrown when there is a problem persisting data to a datastore
*/
case class PersistenceException(message: String)
extends Exception(message: String) with MyAkkaHttpException
/**
* Thrown when validation on an object fails
* @param errors
*/
case class ValidationException(message: String, errors: List[String])
extends Exception(message: String) with MyAkkaHttpException
Et le code suivant:
class ContactFormService(contactFormPersistor: ContactFormPersistor) {
def handleForm(contactForm: ContactForm): ValidationNel[MyAkkaHttpException, String] = {
contactForm.validate() match {
case Success(_) => contactFormPersistor.persist(contactForm)
case Failure(e) =>
new ValidationException(message = "Error validating contact form",
errors = e.toList).failureNel[String]
}
}
}
contactFormPersistor.persist
retoursValidationNel[PersistenceException, String]
contactForm.validate()
retoursValidationNel[String, Boolean]
Le problème est handleForm
n'acceptera pas que PersistenceException
et ValidationException
sont des sous-classes de MyAkkaHttpException
. Que dois-je faire pour réaliser correctement que ces types de retour sont des sous-classes valides?
Utilisez '+', je crois. – Elazar
@Elazar J'ai essayé mais ça se voit comme une erreur de syntaxe. S'il vous plaît pouvez-vous écrire une réponse? – jbrown
try 'ValidationNel [+ MyAkkaHttpException, String]' – Elazar