我正在开发一个带有kotlin
帮助的Android应用程序,但问题是基于纯kotlin
基础知识。下面是显示一些不寻常行为的函数:
fun CatchThat(funct: () -> Unit){
try {
funct()
}catch (ex: Error){
ex.printStackTrace()
}
}
当我在我的代码中使用它时
CatchThat {
// Proprietary Code goes in here
}
为什么遇到这种行为或者我得到一些错误的概念(可能是lambdas
)。我们非常欢迎任何帮助或建议。(我是kotlin
)
编辑我在专有代码中正在做的事情。
我正在尝试调用Thread Pool
,而 private static String WildCardToRegular(String value) {
return "^" + Regex.Escape(value).Replace("\\?", ".").Replace("\\*", ".*") + "$";
}
又调用了一个Web活动。这是最好的,我可以解释它。对不起,我很抱歉。
答案 0 :(得分:3)
try / catch仅适用于当前线程。在你的代码片段中,如果另一个线程中有一些异常,那么try / catch将无法正常工作
例如:
try {
println("Hola mundo 1!")
println(5 / 0)
} catch (ex: Throwable) {
println("Oups! $ex")// will be printed
}
try {
Thread {
println("Hola mundo 2!")
println(5 / 0)
}.start()
} catch (ex: Throwable) {
println("Oups! $ex")// won't be printed
}
println("Hola mundo 3!")//The exception thrown in the external thread don't kill the current thread
有关调试问题,请查看Android Studio threaded debugging
答案 1 :(得分:1)
我不确定它是否能解决这个问题但是它值得一试,因为你所有的努力都是静止的(并且因为你的语法没有错误)。 我想如果调试器在错误的行上停止(或者有时不起作用),通常意味着 代码缓存中已损坏的内容。
如果您正在使用Idea,请尝试使Idea智能缓存无效并重新启动。
在此之前
我还建议您使用最新版本更新Kotlin。