Базисцептион
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
@AlperDerya Решил, спасибо
Это неправильный способ сделать это, вы не можете передавать параметры при назначении типов.
возьмем в качестве примера следующее:
val foo : String
здесь я указываю, что моя переменная foo
имеет тип String, верно? Это именно то, что делает это утверждение:
catch (e: Exception)
вы говорите, что e
имеет тип Exception
, вы не можете создать здесь новый экземпляр.
это означает, что вы должны изменить свой код примерно так:
catch (e: BaseException) {}
а затем, когда вам нужно использовать это, вы должны сделать что-то вроде:
throw BaseException("Test"))
Спасибо за ваши объяснения.
О чем говорит ошибка компиляции? Можешь поделиться?