Java 8 显示神秘行为的函数
我正在用Java 8 显示神秘行为的函数,java-8,kotlin,Java 8,Kotlin,我正在用kotlin帮助开发一个android应用程序,但问题是基于纯kotlin基础知识的。下面是显示一些异常行为的函数: fun CatchThat(funct: () -> Unit){ try { funct() }catch (ex: Error){ ex.printStackTrace() } } 当我在代码中使用它时 CatchThat { // Proprietary Code goes in here } 调试器无法正常工作(有时) 专有代码根本不执
kotlin
帮助开发一个android应用程序,但问题是基于纯kotlin
基础知识的。下面是显示一些异常行为的函数:
fun CatchThat(funct: () -> Unit){
try {
funct()
}catch (ex: Error){
ex.printStackTrace()
}
}
当我在代码中使用它时
CatchThat {
// Proprietary Code goes in here
}
- 调试器无法正常工作(有时)
- 专有代码根本不执行(有时)
lambdas
)。欢迎提供任何帮助或建议。(我是kotlin的泰罗人)
编辑我在专有代码中所做的事情。
我试图调用一个
线程池
,该线程池反过来调用一个web活动。这是最好的,也是我能解释的。很抱歉。try/catch只能在当前线程上工作。在您的代码段中,如果某个异常ocourr出现在另一个线程中,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
有关调试问题,请参阅try/catch将仅在当前线程上工作。在您的代码段中,如果某个异常ocourr出现在另一个线程中,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
有关调试问题,请查看,我不确定它是否解决了问题,但值得一试,因为您的所有努力都是经过仔细考虑的(而且您的语法中没有错误)。 我猜如果调试器停在错误的线路上(或者有时不工作),通常意味着 代码缓存中有东西被破坏了 如果您正在使用Idea,请尝试使Idea缓存无效并重新启动。 在这样做之前 我还建议使用最新版本更新Kotlin。
我不确定它是否解决了问题,但它值得一试,因为您的所有努力都进行得很顺利(而且因为您的语法中没有错误)。 我猜如果调试器停在错误的线路上(或者有时不工作),通常意味着 代码缓存中有东西被破坏了 如果您正在使用Idea,请尝试使Idea缓存无效并重新启动。 在这样做之前 我还建议使用最新版本更新Kotlin。
对我来说,这个代码示例很有用。。。您使用的是哪个版本的kotlin?您提供的专有代码是什么?您没有得到任何输出?您也应该用Throwable替换错误以捕获异常
Kotlin 1.1.2
,很抱歉,我无法提供专有代码,因为代码是专有的。在这里,有时需要注意的是,no@crgarridos。相同的代码在一个时间点工作,没有错误,下次将变为空白!!!试着解释一下你在代码中做什么。片段是正确的。可能会启动另一个线程?对我来说,这个代码示例很有用。。。您使用的是哪个版本的kotlin?您提供的专有代码是什么?您没有得到任何输出?您也应该用Throwable替换错误以捕获异常Kotlin 1.1.2
,很抱歉,我无法提供专有代码,因为代码是专有的。在这里,有时需要注意的是,no@crgarridos。相同的代码在一个时间点工作,没有错误,下次将变为空白!!!试着解释一下你在代码中做什么。片段是正确的。可能会启动另一个线程?非常感谢@crgarridos给出的答案,并为您提供了宝贵的时间,但为什么有时它会提供正确的输出,调试器工作正常,有时代码也会执行?只是猜测一下,它可能会为您的代码变化,因为您有一个线程池,执行是异步的。然后你可以在一个或另一个线程中“随机”出现异常!但再次感谢您给予宝贵的时间和+1!!!!我肯定会提到什么时候我会得到正确的修复,不客气,抱歉没有更干净,但没有代码很难看到问题。我认为你有一些东西可以输出,但并不是所有的代码都执行得很好。非常感谢@crgarridos给出的答案,并为此付出了宝贵的时间。但是为什么有时候它会给出正确的输出,调试器工作得很好,有时候代码也会执行?只是猜测一下,它可能会因你的代码而变化,因为你有一个线程池,执行是异步的。然后你可以在一个或另一个线程中“随机”出现异常!但再次感谢您给予宝贵的时间和+1!!!!我肯定会提到什么时候我会得到正确的修复,不客气,抱歉没有更干净,但没有代码很难看到问题。我想你有一些东西的输出,但不是所有的代码都执行得很好,谢谢先生!!第一行粗体字不起作用,但最后一行,即更新到最新版本,即1.1.3
修复了问题。非常感谢您,先生!!第一行粗体字不起作用,但最后一行,即更新到最新版本,即1.1.3
修复了此问题。非常感谢