Я не могу передать значение внутри конструктора BaseException. Почему?

Базисцептион

class BaseException(private val classname: String) : Exception() {

    override fun setStackTrace(stackTrace: Array<out StackTraceElement>) {
        val trace = arrayOf(StackTraceElement(classname, "methodNameOfExe", classname, 10))
        super.setStackTrace(trace)
    }
}

ТестКласс

{
....

    override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, viewType: Int) {
            try {
                setOnBindViewHolder(viewHolder, viewType)
            } catch (e: BaseException("Test")) { //compiler error for BaseException constructor
               ....
            }
        }

...

Приходит ошибка компилятора, если я пытаюсь передать String arg

О чем говорит ошибка компиляции? Можешь поделиться?

Alper Derya 29.03.2022 11:13

@AlperDerya Решил, спасибо

user14016240 29.03.2022 12:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это неправильный способ сделать это, вы не можете передавать параметры при назначении типов.

возьмем в качестве примера следующее:

val foo : String  

здесь я указываю, что моя переменная foo имеет тип String, верно? Это именно то, что делает это утверждение:

catch (e: Exception)

вы говорите, что e имеет тип Exception, вы не можете создать здесь новый экземпляр.

это означает, что вы должны изменить свой код примерно так:

catch (e: BaseException) {}

а затем, когда вам нужно использовать это, вы должны сделать что-то вроде:

throw BaseException("Test"))

Спасибо за ваши объяснения.

user14016240 29.03.2022 12:10

Другие вопросы по теме