Подтвердить что ты не робот

Бросить пользовательское исключение

Я пытаюсь создать собственное исключение.

Реализация настраиваемого класса исключений:

case class customException(smth:String)  extends Exception

В моем коде я завернул фрагмент кода, который, я уверен, бросает исключение с try/catch, чтобы выкинуть мое пользовательское исключение.

try{
    val stateCapitals = Map(
      "Alabama" -> "Montgomery",
      "Alaska" -> "Juneau",
      "Wyoming" -> "Cheyenne")

    println("Alabama: " + stateCapitals.get("AlabamaA").get)
}
catch{
    case x:Exception=>throw classOf[CustomException]
}

У меня возникла ошибка компиляции:

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

Как я могу бросить собственное собственное исключение в этом случае? Позже я проверяю, является ли исключение броска типа [x], чтобы сделать что-то конкретное.

4b9b3361

Ответ 1

Вы не выбрасываете исключение, а класс исключения (просто прочитайте сообщение об ошибке компилятора...). Вы должны выбросить экземпляр исключения.

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

Ответ 2

Также было бы полезно изменить определение класса Exception следующим образом:

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