Lancer une exception personnalisée

J’essaie de lancer une exception personnalisée.

L’implémentation de la classe d’exception personnalisée est la suivante:

case class customException(smth:Ssortingng) extends Exception 

Dans mon code, j’ai enveloppé un morceau de code qui, j’en suis sûr, jette une exception avec try / catch pour lancer mon customException.

 try{ val stateCapitals = Map( "Alabama" -> "Montgomery", "Alaska" -> "Juneau", "Wyoming" -> "Cheyenne") println("Alabama: " + stateCapitals.get("AlabamaA").get) } catch{ case x:Exception=>throw classOf[CustomException] } 

J’ai une erreur de compilation qui dit:

  found : java.lang.Class[CustomException] [INFO] required: java.lang.Throwable [INFO] case x:Exception=>throw classOf[CustomException] 

Comment pourrais-je lancer ma propre exception sur ce cas? Plus tard, je vérifie si l’exception renvoyée est d’un type [x] pour faire quelque chose de spécifique.

Vous ne lancez pas une exception, mais la classe d’une exception (lisez simplement le message d’erreur du compilateur …). Vous devez lancer une instance d’exception.

 case x:Exception => throw new CustomException("whatever") 

Il serait également utile de modifier votre définition de classe d’exception comme suit:

 case class customException(smth:Ssortingng) extends Exception(smth)