J'essaie de lever une exception personnalisée.
L'implémentation de la classe d'exception personnalisée est:
case class customException(smth:String) extends Exception
Dans mon code, j'ai enveloppé un morceau de code que je suis sûr que jette lever une exception avec try/catch pour lever 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 personnalisée sur ce cas? Plus tard, je vérifie si l'exception levée est de 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:String) extends Exception(smth)