Kotlin: как вызвать super после некоторых вычислений?

#kotlin #error-handling

#kotlin #обработка ошибок

Вопрос:

В настоящее время у меня есть пользовательская ошибка, определенная следующим образом:

 class IsEvenError(message:String):Exception(message)

val n = 10;
if (n%2 == 0) {
   throw IsEvenError("${n} is even");
}

 

Проблема в том, что мне приходится вручную выписывать сообщение об ошибке каждый раз, когда я хочу его выбросить.

Я хочу иметь возможность встроить сообщение об ошибке в сам класс, чтобы я мог сделать что-то вроде:

 throw IsEvenError(n); // this should throw an error saying "10 is even".

 

Как мне это сделать?

Ответ №1:

Вы можете изменить свой IsEvenError , чтобы принять число вместо строки, и передать форматированную строку в Exception :

 class IsEvenError(number: Int) : Exception("$number is even")
fun main() : Unit = throw IsEvenError(10)
 

Выдает:

 Exception in thread "main" IsEvenError: 10 is even
    at TestKt.main(Test.kt:2)