我无法在 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)
你说 e
是 Exception
类型,你不能在这里创建新实例。
这意味着您应该将代码更改为如下所示:
catch (e: BaseException) {}
然后在你需要使用它的地方,你会做这样的事情:
throw BaseException("Test"))
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)
你说 e
是 Exception
类型,你不能在这里创建新实例。
这意味着您应该将代码更改为如下所示:
catch (e: BaseException) {}
然后在你需要使用它的地方,你会做这样的事情:
throw BaseException("Test"))