如何为Kotlin中扩展函数引发的异常提供自定义异常消息?
我有以下Kotlin代码:如何为Kotlin中扩展函数引发的异常提供自定义异常消息?,kotlin,Kotlin,我有以下Kotlin代码: fun getAdminUser():用户{ 返回getAllUsers().first{it.userType==ADMIN}作为用户 } 如果getAllUsers()没有与指定谓词匹配的元素,它将抛出NoTouchElementException。我对这个异常很满意,但希望在异常失败时覆盖异常消息以提供更多上下文。是否可以在Kotlin中使用try catch?您可以使用firstOrNull功能来实现这一点 fun getAdminUser(): User
fun getAdminUser():用户{
返回getAllUsers().first{it.userType==ADMIN}作为用户
}
如果
getAllUsers()
没有与指定谓词匹配的元素,它将抛出NoTouchElementException
。我对这个异常很满意,但希望在异常失败时覆盖异常消息以提供更多上下文。是否可以在Kotlin中使用try catch
?您可以使用firstOrNull
功能来实现这一点
fun getAdminUser(): User {
return (getAllUsers().firstOrNull { it.userType == ADMIN } as? User) ?: throw NoSuchElementException("Element not found")
}
用于获取第一个元素或使其为null,并使用elvis运算符抛出NoTouchElementException
fun getAdminUser():用户{
val user=getAllUsers().firstOrNull{it.userType==ADMIN}?:抛出NoSuchElementException(“我的自定义异常消息”)
返回用户为?用户?:IllegalStateException(“元素既不是null,也不是用户类的实例”)
}
否则,要在单行中执行此操作,您可以执行以下操作:
fun getAdminUser():用户{
return getAllUsers().firstOrNull{it.userType==ADMIN}?.另外{require(它是用户){“元素既不是null也不是用户类的实例”}}?:抛出NoSuchElementException(“我的自定义异常消息”)
}
getAllUsers().firstOrNull{it.userType==ADMIN}?:抛出NoSuchElementException(“我的自定义异常消息”)
@AnimeshSahu,它不适用于我的角色转换。这解决了我的问题。无需在Elvis操作员面前将零件包装在圆括号中。谢谢