我无法在 BaseException 构造函数中传递值。为什么?

I'm not able to pass value inside BaseException constructor. Why?

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,编译器将出现错误

这不是正确的做法,分配类型时不能传递参数。

以下面为例:

val foo : String  

在这里,我指定我的变量 foo 是字符串类型,对吗?这也正是该声明的作用:

catch (e: Exception)

你说 eException 类型,你不能在这里创建新实例。

这意味着您应该将代码更改为如下所示:

catch (e: BaseException) {}

然后在你需要使用它的地方,你会做这样的事情:

throw BaseException("Test"))