Бросай нестандартное исключение - PullRequest
42 голосов
/ 16 июля 2011

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

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

case class customException(smth:String)  extends Exception

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

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] для выполнения чего-то конкретного.

Ответы [ 2 ]

55 голосов
/ 16 июля 2011

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

case x:Exception => throw new CustomException("whatever")
27 голосов
/ 24 января 2014

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

case class customException(smth:String)  extends Exception(smth)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...